Facebook'un çarkları nasıl dönüyor?

Facebook gibi dev bir sistemi döndüren çarkları hiç merak ettiniz mi? Facebook nasıl çalışıyor?

  • Berker Güngör

Altı yıl gibi nispeten kısa bir süre içinde 400 milyondan fazla kullanıcıya ulaşan Facebook, sosyal ağların gücünün gerçek bir göstergesi haline geldi. Facebook adını duymamış bilgisayar kullanıcısı neredeyse yok. Neredeyse her gün çıkan Facebook ilintili haberler sayesinde, bilgisayara el sürmemiş insanlar bile bu sosyal ağın adına aşina oldular.

Peki ama nasıl çalışıyor şu Facebook? 400 milyon kullanıcısı olan bir servisin motor kaputunun altında ne var? Çoğu kullanıcının pek kafa yorduğu bir konu değil şüphesiz. Ama merak edenler için kaputu kaldırıp bir bakalım dedik.

Facebook, her isteneni yapan ve yüz milyonlarca kullanıcının yükünü tınmadan taşıyan sihirli bir hayvancık değil. Açtığınız o nispeten basit görünümlü Facebook sayfasının ardında, çok büyük ve karmaşık bir altyapı var. Pek çok farklı parçadan oluşan bu yapının özel detayları tabii ki biraz ticari bir sır. Ama geri kalanı herkesin görebileceği unsurlardan oluşuyor.

Vitrinde Gördükleriniz

Linux güvenlik için tercih ediliyor

Facebook'un ana altyapısını LAMP kısaltmasıyla çağrılan bir dizi uygulama oluşturur. Linux, Apache, MySQL ve PHP uygulamalarının bir karışımı olan LAMP, farklı yazılımlar ve programlama lisanlarının bir arada çalıştığı çekirdektir.

Linux ve Apache
Bildiğiniz gibi, Linux hayli gelişmiş, özellikle güvenlik açısından tercih edilen bir işletim sistemidir. Facebook'un tüm program yapısı bu işletim sistemi üzerinde çalışmaktadır. Apache ise yine hayli yaygın kullanılan bir sunucu yazılımıdır, internet camiasında çokça tercih edilir.

Her iki yazılımın da ortak özellikleri, açık kaynak kodlu olmalarıdır. İkisi de geliştirilmeye açıktır. Bu da özellikle Facebook gibi devamlı büyüyen ve yeni uygulamaları bünyesine katmaya ihtiyacı olan bir hizmet için gereklidir.

Dev veri tabanları ve arşivleme

MySQL
Facebook'un dev veri tabanı yine bir başka popüler yazılım olan MySQL veri tabanı uygulaması üzerinde çalışmaktadır.

Ancak Facebook tasarımcıları bu yazılımın temel özelliklerinden faydalanmakla birlikte, kendi ihtiyaçlarına yönelik bir arşivleme yöntemi de geliştirmişlerdir.

Veriler kullanıcı bazında ulaşım sıklığı ve güncelliğe göre sınıflandırılırlar.

Facebook olduğu gibi kullanmıyor, kendine göre modifiye ediyor
PHP
Facebook için kullanılan ana programlama lisanı PHP olarak seçilmiştir. Dinamik yapısı ve yoğun kullanıcı desteği bu tercihte şüphesiz en önemli unsurlar olmuştur.

Hafızayı Taze Tutmak

Facebook'un veritabanı devasa boyutlardadır

Bir web sitesinin ihtiyacı olan tüm bilgiler veritabanında toplanırlar, tabii ki bu veritabanı da sabit disklerde depolanır. Küçük çaplı bir sitede sabit disklerin hızı veritabanına olan erişimi çok fazla kısıtlamaz. Ancak site büyüdükçe işler değişir.

Facebook gerek kullanıcı sayısı, gerekse de bunların depolanan verilere erişme biçimi açısından çok karmaşık bir işleyişe sahiptir. Bu yüzden de benzeri tüm büyük sitelerde olduğu üzere, burada da veri tabanının önemli bir kısmı devamlı RAM üzerinde tutulur.

Bu iş için Memcache yazılımı kullanılmaktadır. Memcache sayesinde hem sitenin devamlı çağrılan öğeleri, hem de en sık erişilen kullanıcı verileri devamlı dinamik hafızaya alınarak, siteye olan erişimin hızlandırılması sağlanır. Tabii bu iş için inanılmaz boyutlarda RAM gerektiğini de hatırlamak lazım! Ancak Facebook gibi yüzmilyonlarca kullanıcısı olan bir sistemde, erişim hızını kabul edilebilir seviyelerde tutmanın başka çaresi de yoktur.

LAMP'ın Eksikleri

Yepyeni problemlerle karşılaşıyorlar

Bahsettiğimiz LAMP yazılım yığını programcılara pek çok esneklik sunar. Öte yandan LAMP yazılım destesi tamamen sorunsuz değildir. Programcılar sık sık sorunlarla karşılaşmakta, kendi araçlarını geliştirmek zorunda kalmaktadırlar. Ancak bunun ana sebebi kullanılan yazılımların kusurlu olmasından kaynaklanmaz.

Facebook programcılarının karşılarındaki en büyük sorun, bizzat yarattıkları sistemin dev boyutlarıdır. Pek az internet servisi Facebook kadar karmaşıktır. Bu yüzden programcıların gittikçe daha da büyüyen bu sitede karşılaştıkları sorunlar da çoğu zaman kendine has, daha evvel pek karşılaşılmamış sorunlar olmaktadır.

Mesela PHP programlama lisanı bu boyutlarda bir uygulama düşünülerek hazırlanmış değildir. Haliyle Facebook'un ihtiyaçlarını karşılamakta sık sık zorlanmaktadır. Bu yüzden de sık sık yeni araçlar eklenmesi elzemdir.

Yine benzer bir şekilde, devamlı büyüyen ve şişen veritabanının ayakta kalabilmesi için normalden daha fazla çaba harcamak gerekmektedir. Facebook veritabanı, tüm kullanıcılar arasında devamlı oluşan çapraz ilişkilendirmeler nedeniyle inanılmaz biçimde karışıktır. Sisteme yeni bir sunucu ekleyerek depolama alanı sorununu çözmek, Facebook için geçerli bir çözüm değildir.

Perde Arkası

Buraya kadar saydığımız yazılımlar ve uygulamalar, Facebook'un görülen yüzünü ayakta tutuyor. Ancak bir de daha geri planda çalışan, ancak özel istemle devreye giren pek çok alt uygulama var. Bunların büyük kısmı Facebook'a özel unsurlar ve gerektiğinde doğru araçları kullanarak yaratılmaları gerekiyor. Burada yeni uygulamaların oluşturulmasını kontrol eden üç temel doktrin var:

1) Yeni bir hizmeti ancak ihtiyaç ortaya çıktığında hazırlamak ve sunmak.
2) Yeni hizmetleri rahat yaratabilmek için, gerekecek araçları da beraberinde oluşturmak.
3) Amaca uygun programlama lisanını seçmek ve kullanmak.

Arka planda çalışan hizmetleri oluşturmak ve ayakta tutmak için kullanılan ayrı bir yazılım demeti vardır. Tıpkı LAMP gibi, bu demetin de farklı öğeleri mevcuttur. Gelin bunlara da bakalım.

Thrift
Thrift, farklı lisanlarda yazılan uygulamaların çalıştırılabildiği esnek bir protokoldur. C++, Python, Perl, Java, Erlang gibi pek çok programlama lisanını destekler.

Scribe
Bizzat Thrift'in üzerine kurulu olan Scribe, pek çok farklı sunucudan gelen veri akışının kaydını tutmakla yükümlüdür. Bu kayıtlar özellikle veritabanı yönetiminde önemli işleve sahiptir.

Cassandra da neyin nesi?

İşin arkasındaki ekip: Facebook Engineering

Facebook'un veritabanı ihtiyaçlarının MySQL ile karşılandığını söylemiştik. Ancak MySQL tek başına yeterli değildir. Bu denli büyük bir veritabanı içinde aradığınızı hızla bulabilmek için ayrıca bir yöneticiye ihtiyacınız olacaktır. İşte Cassandra bu işe yarar. Facebook içinde yapılan aramaların başarıya ulaşması, Cassandra'nın pek çok sunucuya dağılmış olan verilen izini sürebilmesine bağlıdır.

HipHop for PHP
Bu yazılımın ana amacı, PHP'nin yavaş kaldığı alanları güçlendirmektir. Bunun için Facebook'un ana web lisanı olan PHP ile yazılmış olan kodlar, HipHop tarafından C++ lisanına çevrilirler. Bundan sonra da doğrudan makine lisanında derlenerek, işlemlerin daha da süratli yürümesi sağlanır.

Hepsi Bu Kadar mı?
Facebook'un çarklarını döndüren ana yazılım ve uygulamaları kısaca anlatmaya çalıştık. Tabii işin çok derinine inmeye sayfalar yetmez, ancak bu kadarı bile insana bir fikir vermeye yetebiliyor. Facebook ve benzeri servislerin sık sık ortaya çıkmamasının sebibini kolayca anlayabiliyoruz. Bu boyutlarda bir girişimin altından başarıyla kalkmak şüphesiz hiç kolay değil.

Okuyucu Yorumları

Toplam 17 Yorum

ne sistem ama wooooooooow

Helal olsun valla bizde niye böyle bir sistem yok ?

Bizde e-okul,ösym vb. önemli sitelere birazcık yüklenme oldumu kilitleniyor,çöküyor...Teknoloji ve donanım farkı işte:(

herif Dünyanın parasını kırıyor, bu sistemle.. olacak o kadar.

maşallah valla.

Windows değil de Linux kullanıyorlar, edip'e sormak lazım neden o çok güvenli windows'u kullanmadıklarını? :D :D :D
Saygılarımla..!!!

Php'den yakınıyorlar gibi geldi sanki :)
Neden linux diye sormak lazım bence lisans maliyetlerinden korktukları için güvenlik vs bahanelerini ortaya atıyorlar..

Olucak tabi adamlar bizle ilgili butun verileri logluyorlar ve bunlari satiyor sonucta para kazanmak icin. Sonuc veri demek para demek. Ne kadar cok veri o kadar cok para.

özgür yazılım warken adamlar biraz sey mi de windows kullansınlar :) linux bu istediğin şeye uyarla.

ayrıca maliyetten korktukları için linux diyen arkadaşa gülüyorum :D ms'in firmalar için cok cok cazip fiyatlar sundugunu. toplu lisanslama werdiğini bilmiosun galiba. kaldıki facebook gibi paraya para demeyen bi şirket için sorun mu olacagını sanıosun :)

windows değilde linux diyenler; olay windowsun kötü olup olmaması değil olay açık kaynak kodlu olması gibi geliyor bana. ihtiyaçlarına uygun düzenlemeleri ancak bu şekilde yapabiliyorlar. linux hamur gibidir istediğiniz gibi şekle sokarsınız.

desenize 400 milyon uzaktanda olsa linux kullanıyormuş :)

(linux hamur gibidir istediğiniz gibi şekle sokarsınız) diyen arkadaş, ne güzel anlatmışsın linuxu

microsoftun ortak olmasına rağmen, yazıya göre hiç microsoft ürünü kullanılmamış ilginç :)

bende facebook kullanıyorum ama bence o kadar da ahım sahım bır sıte degıl teknık destek sıfır kafalarına gore ıs yapıyorlar hemde cıkarları ıcın hızmet edıyorlar kullanıcılar ıcın degıl

linux, apache, mysql demek ki bu kadar iyiymiş. bir sorum var bu yazııyı hazırlayan editörlere : facebook windows işletim sistemi altında bu şekilde yapmak mümkün olur mu? yani win 2008 server, ms sql server ve asp.net ile?

Elbette hazırlanabilir, ancak makalede de belirtildiği gibi bu teknolojiler standart halleriyle kullanılmamış. Açık kaynak kodlu seçilmesinin sebebi, dev boyutlar yüzünden oluşabilecek teknik sorunların aşılmasında Facebook mühendislerinin özel çözümler geliştirebilmesidir. Yani standart teknolojiler değil, modifiye teknolojiler kullanılmıştır. Açık kaynak şüphesiz bu açıdan çok avantajlı olsa da gerekli uzman insan gücü, zaman ve emek açısından bedavaya gelmemektedir.

Elbette bu çapta bir proje geliştirdiğinizde, Microsoft teknolojilerini seçerseniz, şirket bazında Microsoft ile anlaşma imzalayıp özel çözümlerde Microsoft mühendislerinden yararlanabilirsiniz. Normalde açık kaynak olmayan teknolojilerde değişiklik yapamazsınız ama bu çapta projelerde Microsoft gibi dev şirketler esnek ve yardımcı davranırlar, özel fiyatlarla özel anlaşmalar ve özel imkanlar ve çözümler sunarlar. Bu tür işlerle uğraşan sertifikalı özel şirketler de var.

Bu makalenin editörü Berker bey ile görüşüp hem onun cevaplarını, hem de kendi bildiklerimi aktardım, umarım sorunuzu cevaplamış, yardımcı olmuştur.

O kaputun altında Linux işletim sistemi, bir V8 hatta V16 motor gibi gümbür gümbür çalışıyor :)

uzun zamandır merak ettiğim konulardan biriydi, teşekkürler.

Sen de yorum yaz