Ölçeklenebilir mimari

Hepimiz siyasetten bıktık sanırım.
Kendi adıma, hiçbir siyasi gruba ait hissetmediğim halde, bu kadar politize olmama çok kızıyorum.
Bir "taraf" olup, bundan "ekmek yiyen" yığınları saymıyorum bile. Bence onlar da bıktılar. Hepimiz bıktık.
Yıllardır, siyasetin hiç girmeyeceği bir sosyal medya üzerinde çalışıyorum.
Aslında daha önce yazdım, çıkardım.
Fakat, davalar, problemler ve yazılımda mükemmellik arayışı, projeyi ötelememe sebep oldu.
Yavaş, ama sağlam adımlarla tekrar geliştiriyorum.
Aslında, geliştirdiğim sadece bir sosyal medya sitesi değil: Performans ve ölçeklenebilirlik olarak dünyadaki benzerlerinin hemen tümüne fark atabilecek bir "framework"!
Toplama kodlarla değil; C dili ile tamamen sıfırdan geliştirdiğim, özgün :
Async event multiplexer'ı(libevent libuevent benzeri epoll & kqueue edge triggered destekliyor)
HTTP sunucusu
Websocket sunucusu
Ölçeklenebilir cloud veritabanı(tamamen ölçeklenebilir)
Mutex, futex, async mutex ve futex uygulamaları
Local(not thread safe) ve global(thread safe) Memory allocation cache'i
ve burada sayamadığım daha onlarca özelliği olan bir C framework üzerinde çalışıyorum.
Aslında, bu 25 yıldır devamlı olarak geliştirdiğim, tumgazeteler.com'u da üzerinde çalıştırdığım framework'ün daha da geliştirilmiş halinden başka birşey değil.
Mesele, böyle bir sistemi, yazmak değil, dünyadaki en iyi rakipleri ile boy ölçüşebilecek şekilde performanslı ve "ölçeklenebilir" yazmak.
Başka bir deyişle, asıl sorun, bir web sitesi ya da uygulamayı, on bin kişi kullandığı zaman ne olacağını düşünerek "yazmış gibi yapmak" değil. Sistemi en baştan tasarlarken, söz konusu sistemi bir milyar kişi kullandığında neler olacağını öngörerek, yazılımda hiçbir değişiklik yapmadan, sadece yeni donanım ekleyerek yapabilmek. Ve bir milyar kişi de sisteme girdiğinde kullanıcılara hiçbir rahatsızlık verici yavaşlama olmadan sistemin çalışmaya devam etmesi.
Yazılan ürünün, CPU'nun her "cycle"ının hakkını vererek çalışması, ancak:

* L1,L2 cache ve cache line size nedir?
* Bir sistem çağrısı kaç merkezi işlemci döngüsünde(CPU cycle) gerçekleştirilir?
* Lock contention nedir?
* False sharing nedir?

sorularının ve bir yazıya sığmayacak başka pek çok sorunun cevaplarının tümünün hesaba katılarak yazılan bir framework üzerinde, ölçeklenebilir bir mimari tasarımı ile mümkündür.

Başkalarının yazdığı framework'leri kullanmak, dünyada yaygın bir çözüm. Mantıklı olanı da budur. Herkesin bir uzmanlık alanı var.  Fakat, dünyanın en iyi şirketleri, eninde sonunda kendi framework'lerini yazmak zorunda kalırlar. Kimileri bunu, Microsoft ve Google gibi en baştan, kimileri de Facebook gibi, milyar dolarlık halka arzlardan sonra yapabilir. 
Non-blocking asynchronous model ile thread pool'un çok zarif bir bileşimini yakaladığımı düşünüyorum.
Böyle bir sistemin yapması değil, test etmesi bile bir uzmanlık, sorun ve zaman teşkil ediyor. Biraz yavaş gidiyor, ama çok sağlam ilerliyor.
Veritabanı dışındakiler için test aşamasındayım.
Aslında cloud veritabanı da tumgazeteler.com'da uzun yıllar çalışmış, test edilmiş bir yazılım idi. Fakat, non-blocking events & thread pool modeline daha iyi entegre etmek için kodda değişikler yaptım.
Kısacası, zaman gerekiyor.
Tüm bunlar bittiğinde?
Tüm bunlar bittiğinde, ilk yazacağım proje, "politikanın olmadığı, insanların sadece olumlu aktivitelerini paylaşıp, insanlığı, spor, sanat, zenaat gibi ortak noktalarda birleştireceğine inandığım Aktivitiez v2.0 gelecek :)
Bu yaz aylarında bitirip, hemen her gün basketbol oynadığım sahadaki gençleri üye yapmakla yayına başlayabileceğimi düşünüyorum

Yorumlar

Bu blogdaki popüler yayınlar

Visual proofs of Hohha Dynamic XOR Encryption Algorithm