Sağlayıcılar değişse de yaşamaya devam eden sistemler tasarlarım_

İstanbul’da yaşayan bir yazılım mimarıyım.
On yıldır ekiplerin işletebileceği, geliştirebileceği ve sahiplenebileceği sistemler kuruyorum.

SAGENTIQ kurucusu
Bir istemci isteğinin API geçidinden uygulama servislerine ve veri depolarına akışını gösteren mimari diyagram.// SİSTEMİN MİMARİSİLIVE_SYSTEM.run()İstemciistekAPI geçidikimlik · sınır · doğrulamaistek akışıServisiş kurallarıkoordinasyonVeritabanıkalıcı veriKuyrukiş · olay · tekrar
Örnek sistem mimarisi
Cihan Taylan / Yazılım mimarı↓

İlginç işlere yer açmak için sıkıcı kısımları sağlam kurarım.

Araçları ihtiyaca göre seçerim: mümkün olduğunda açık kaynak, anlamlı olduğunda yönetilen hizmetler.

Mimari kararlar geleceğe dair varsayımlara dayanır. Zaman içinde geçerliliğini koruyacak seçimler yapmaya çalışırım.

Ekiplerle birlikte, gerekçesini anlayabilecekleri, bakımını üstlenip geliştirebilecekleri çözümler tasarlarım.

Mimari

Satır düzeyinde, şema düzeyinde ve hibrit veri yalıtımı. Üçünü de canlı sistemlerde uyguladım; her birinin avantajlarını ve zorluklarını gördüm.

Bu deneyimler hangi koşulda neyi seçeceğimi şekillendirdi.

ÇOK KİRACILI SaaS

Servis sınırları

Ekiplerin monoliti ne zaman servislere ayırması, ne zaman tek parça tutması gerektiğini değerlendirmelerine yardımcı olurum.

Sınırlar netleştiğinde ve ekip bu yapıyı işletebilecek durumdayken ayırmak anlamlıdır.

MONOLİTTEN MİKROSERVİSLERE

BullMQ · gRPC · Kafka

Güvenilir arka plan görevleri, çift yönlü veri akışları ve olay işleme hatları kurarım. Araçları sistemin gecikme gereksinimlerine göre seçerim.

İş kuyrukları ile olay akışları farklı ihtiyaçları karşılar. Seçime sistemin ihtiyacından başlarım.

ASENKRON VE GERÇEK ZAMANLI

Modernizasyon

10 yıllık PHP hâlâ para kazandırıyor mu? Saygı duyarım. Yeniden yazmadan 10 yıl daha yaşatmanın yoluna bakarım.

İşini yapmaya devam eden kodun değerini bilirim.

MEVCUT SİSTEMLER

Geliştirmeden canlıya

CI/CD, Docker orkestrasyonu, otomatik dağıtım, gözlemlenebilirlik ve kullanışlı monorepo iş akışları kurarım. Açık kaynak araçlarla geliştirme ortamının kontrolü ekipte kalır.

İyi bir geliştirme ortamı, ilk günden zaman kazandırır.

GELİŞTİRİCİ ORTAMI

Denetimler

Şirket satın alımı, yatırım turu veya büyük bir geliştirme yatırımı öncesinde kod tabanını inceler, riskleri açıkça ortaya koyarım.

Her kod tabanı, okumayı bilirsen gerçeği söyler.

TEKNİK DEĞERLENDİRME

SAGENTIQ'daki çalışmalarım

SAGENTIQ'yu, ekiplerin danışmanlık ve eğitim yoluyla yapay zekâyı işlerine katmalarına yardımcı olmak için kurdum. Buradaki mühendislik yaklaşımını kurumların ihtiyaçlarına taşıyorum.

SAGENTIQ'yu keşfet

Gecenin 2'sinde savunacağım görüşler.

On yıllık mimari kararlarla şekillenen görüşlerim. Bazıları tartışmaya açık. Gerekçesini okumak için birini aç.

İstek başarılı olduğunda ve olmadığında.

Dört senaryoyu incele: başarı, ret, istek sınırına takılma ve yavaş yanıt. Bir isteği takip ederek zamanın nerede harcandığını ve yanıtı hangi kararların şekillendirdiğini gör.

Örnek bir istek akışı. Kodlar ve süreler anlatım amaçlıdır; canlı sistem ölçümü değildir.

senaryo: Başarılı · istek tamamlandı · toplam 30ms
// BU AŞAMANIN AMACI
Nginx

TLS bağlantısını sonlandırır, bağlantı havuzunu yönetir ve yoğun trafiğe karşı ilk sınırı uygular.

// BU AŞAMADAKİ KOD
# nginx.conf
location /api {
  limit_req zone=api burst=20;
  proxy_pass http://backend;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Request-ID $request_id;
}
// TELEMETRİ
gözlemlenebilirlik
›access.log
›upstream.ms
›status_code metriği

Kullandığım ve takip ettiğim teknolojiler.

Kullandığım, denediğim veya geride bıraktığım araçlar. Dört kategori ve beş halka, her birinin günlük işlerimde ne kadar yer tuttuğunu gösteriyor.

Kullandığım ve takip ettiğim teknolojiler.Teknolojileri kategorilerine göre gösteren radar. Bir araç merkeze ne kadar yakınsa günlük işlerimde o kadar çok yer alıyor. Aynı araçlara aşağıdaki listeden de ulaşabilirsin.GÜNLÜKKULLANDIMDENİYORUMTAKİPTEGEÇMİŞBULUT + PLATFORMYAPAY ZEKÂBACKEND + VERİFRONTEND
Teknolojileri listele
● GÜNLÜK · ilk tercihim● KULLANDIM · uygulamada kullandım● DENİYORUM · araştırıyorum● TAKİPTE · gözlemliyorum● GEÇMİŞ · artık kullanmıyorum

// haritayı keşfet veya aşağıdaki teknoloji listesini aç

Çalışma tezgâhından.

Sık karşılaştığım sorunlar, günlük mühendislik alışkanlıklarım ve öğrenme yöntemlerim. Kararların arkasındaki çalışmaya daha yakından bir bakış.

Deneyim

Aynı problemler, farklı logolar.

Unvanlar ve teknolojiler değişiyor, sorunlar çoğu zaman tanıdık geliyor. On yıl boyunca farklı ekiplerle uğraştığım sorunlardan bazıları bunlar.

“Bakımı zorlaşan monolit; ekibin geliştirme ve yayınlama hızı her çeyrek düşüyor.”
4×SEFER
“Gözlemlenebilirlik yok. Her hata bir muamma; gece üçte arızanın nedenini tahmin etmeye çalışıyoruz.”
6×SEFER
“Bulut faturası bir yılda ikiye katlanmış, kimse nedenini bilmiyor.”
3×SEFER
“Yeni ekip var, ortak geliştirme ortamı yok. Yeni birinin geliştirmeye başlayabilmesi iki hafta sürüyor.”
5×SEFER
“Hâlâ para kazandıran eski bir PHP sistemi. Kimse dokunmak istemiyor.”
2×SEFER
“Çok kiracılı bir SaaS ürününde üç yıl önce yanlış veri yalıtım modeli seçilmiş.”
3×SEFER
“Gerçek zamanlı çalışması gereken sistem veriyi aralıklarla sorguluyor. Ürün ekibi gecikmeden şikâyetçi.”
2×SEFER
“Herkesin çekindiği bir CI/CD süreci. Cuma günü sürüm yayınlamak yazılı olmayan bir yasak.”
4×SEFER

// on yıllık deneyim · yaklaşık sayılar · müşteri ayrıntıları gizli

Ekiplerin kazandıkları

Rahat çalışabilen bir mühendislik ekibi.

Sık karşılaştığım başlangıç koşulları ve ekiplerle birlikte kurmayı hedeflediğim çalışma düzeni.

// ÖNCE
xYeni birinin geliştirmeye başlayabilmesi iki hafta sürüyor.
xDağıtım çok sayıda elle müdahale gerektiriyor. Cuma günleri yasak.
xGözlemlenebilirlik yok. Hata ayıklamak tahmin yürütmeye dayanıyor.
xBulut faturası büyüyor, nedeni belirsiz.
xGeliştirme ortamı ekibin yarısının bilgisayarında çalışmıyor.
x"Benim makinemde çalışıyor" hâlâ yeterli bir açıklama sayılıyor.
→
// SONRA
✓Depoyu indir, tek komut çalıştır. İki saat içinde işe hazır.
✓Git push sonrasında dakikalar içinde canlıya çıkış.
✓İzleme panoları ve istek izleriyle sorunların nedenini bulmak kolaylaşıyor.
✓Maliyetler görünür. Fatura öngörülebilir.
✓Yerel geliştirme ortamı canlı sistemle tutarlı.
✓"Benim makinemde çalışıyor" artık yeterli değil.
Nasıl öğrenirim

Yaparak öğrenir, nedenini sorgularım.

Çalışan bir sistem, bildiklerimi sınayabileceğim bir yer açar. Bu alışkanlıklar hem kendi kararlarımı sorgulamama hem de birlikte çalıştığım insanlardan öğrenmeme yardımcı olur.

YÖNTEM

Teknolojileri öğrenirken başlangıç projeleri hazırlarım.

Bir teknolojiyi derinlemesine öğrenmek için kimlik doğrulama, kuyruklar, CI/CD, Docker ve testler içeren bir başlangıç projesi hazırlarım. Onu üç gerçek projede kullanmak, bir eğitimden çok daha fazlasını öğretir.

YÖNTEM

Sistemlerin hata durumlarını sınarım.

Canlıya geçmeden önce test ortamında bilinçli olarak hata senaryoları oluştururum. Canlı sistemlerdeki arızalar da yazıya dökülmemiş varsayımları ortaya çıkarır ve bize somut dersler verir.

// arızalardan çıkan dersler mimari karar kayıtlarına yansır
YÖNTEM

Ne satın aldığımı anlamak için kendim de geliştiririm.

Bir araç ayda 500 dolar istiyorsa, nedenini anlamak isterim. Çoğu zaman işlevlerinin %80'ini bir hafta sonunda geliştirebilirim. Kalan %20, satın almanın mı yoksa geliştirmeye devam etmenin mi doğru olduğunu gösterir.

// aylık 6 bin dolarlık SaaS yerine kendi barındırdığım PaaS
YÖNTEM

Takıldığımda yapay zekâyla birlikte düşünürüm.

Fikirleri araştırmak ve varsayımlarımı sorgulamak için yapay zekâ kullanırım. Bir problemi modele anlatırken, henüz anlamadığım noktalar çoğu zaman ortaya çıkar. Verdiği cevapları yine doğrulamak gerekir.

// günlük işlerimde Claude ve Codex
YÖNTEM

Yeni öğrendiğimi öğretirim.

Bir konuyu başkasına anlatmak, nerede eksik kaldığımı gösterir. Ekiplerle gerçek örnekleri beyaz tahtada ve birlikte kod yazarak ele alırım. Sorulara her zaman yer vardır.

// ekiplerin içinde uygulamalı mentorluk
// RAKAMLARLA ON YIL
6
hazırlanan başlangıç projesi
12+
arıza yaşanan canlı sistem
4
sıfırdan kurulan araç
8
mentorluk yapılan mühendis
0
yazılan blog yazısı
› öğrendiklerimi çalışan kodla sınarım.
Yapmak deneyim kazandırır.
Kararlarımı sorgulamak, o deneyimi kullanmama yardımcı olur.
İkisine de zaman ayırmaya çalışırım.

Mühendisliğin dışında da bir hayat var.

Klavyeden uzak kaldığımda yaptıklarım. Gerçi kendimi yine bir şeylerin nasıl çalıştığını düşünürken buluyorum.

Müzik

Gitar çalıyorum. Ritim tutmak ve bir pasajı temiz çalana kadar tekrar etmek sabır istiyor. Kod yazarken de benzer bir sabra ihtiyaç duyuyorum.

İki teker

Risk yönetimini, sistem arızalarını incelemeye başlamadan önce motosiklet üzerinde öğrendim. Hızın keyfi, frenine güvenebilmekte.

Objektif

Fotoğraf çekerken neyi öne çıkaracağıma, neyi kadrajın dışında bırakacağıma karar veririm. Ürün geliştirirken de kendimi benzer sorular sorarken buluyorum.

Birlikte düşünelim.

Bir mimari kararı mı değerlendiriyorsun, karmaşık bir sistemi mi çözüyorsun, yeni bir fikir mi araştırıyorsun? Üzerinde çalıştığın konuyu anlat.

cihantaylan@cihantaylan.com

Her mesajı okurum. Biraz bağlam paylaşırsan, konuşmaya iyi bir yerden başlayabiliriz.