Facebook, -þöhreti, getirdikleri ve hakkýndaki iddialar bir yana- sonuçta bir yazýlým… Bu kadar çok kullanýlan bir uygulamanýn arkaplanýnda ve teknik altyapýsýnda neler var?

Önce birkaç istatistik… (Facebook sayfasýndan)

  • Siteye ortalama her gün 250 bin yeni kayýt oluyor.
  • Ayda ortalama 65 milyar sayfa gösterimi var.
  • Kullanýcýlarýn en az yarýsý her gün giriyor.
  • Dünya’nýn en çok kullanýlan fotoðraf paylaþým uygulamasý… En yakýn üç rakibinin toplamýndan daha fazla resim gösterimi yapýlýyor.
  • Facebook platformunu kullanan 7 binden fazla uygulama yazýlmýþ. Her gün yüzden fazla yeni uygulama ekleniyor.

Teknik altyapýya gelince…

  • Neredeyse tamamen açýk kaynaklý uygulamalar kullanýlmýþ.
  • Yazým dili PHP. Arka planda çalýþan bazý uygulamalar Java, Python ve Perl kullanýyor. Ayrýca C++ uyumlu uygulamalar için gcc ve Boost kütüphaneleri kullanýlmýþ. Yine, c++ uygulamalarýnýn daha saðlýklý çalýþmasý için kendileri phpembed adlý bir kütüphane yazmýþlar.
  • Sunucularda Linux yüklü. Web server olarak Apache kullanýlýyor. Dünyanýn her yerinde hýzlý çalýþmasý için içeriðin çoðunu Akamai sunucularýnda tutuyorlar.
  • Sistemde 2 milyardan fazla fotoðraf dosyasý yüklü. Bunlar diskte yaklaþýk 200 terabyte yer tutuyor. Kullanýcýlar her hafta 80 milyon civarýnda resim yüklüyor. Her fotoðraf için 4 ayrý boy tutulduðundan, bu 300 milyondan fazla resim dosyasý demek. Oluþan yoðunluðu karþýlayabilmek için, yüklenen fotoðraflarý iþleyen bir çok sunucu var. Ayrýca bir grup sunucu, iþlenmiþ fotoðraflarý Akamai’ye gönderiyor. Bazý fotoðraflarý tutmak üzere kendi dosya sunucularý da var.
  • Veritabaný olarak MySQL kullanýlýyor. Birbirine baðlý binlerce MySQL veritabanlarý var.
  • Veritabanýndan bilgi çekmek çok yavaþ olduðu için cache (önbellek) mekanizmasý kullanýlýyor. memcached isimli açýk kaynaklý uygulamayý kendi yazdýklarý kodlarla geliþtirmiþler. (detaylý bilgi)
    • Sitenin neredeyse belkemiði bu uygulama. Kullanýcý profillerini, arkadaþ bilgilerini, uygulamalarý hep önbellekte (RAM’de) tutuyor ve çok hýzlý gelmesini saðlýyorlar.
    • 400′den fazla memcached sunucusu var.
    • 5 Terabyte’dan fazla RAM önbellekleme için kullanýlýyor.
    • memcached sorgularýnýn daha hýzlý çalýþmasý için TCP yerine UDP portunu kullanmýþlar.
    • Ayrýca APC kütüphanesini kullanarak sayfa görüntülemeyi 30 kat hýzlandýrmýþlar.
  • Kendi yazdýklarý site içi arama motorunu kullanýyorlar. Ayda 1 milyara yakýn arama yapýlýyor. Önbellek için 2 terabyte civarýnda RAM ayrýlmýþ. Ortalama sonuç süresi 100 milisaniye civarýnda imiþ.
  • Yazdýklarý kodu yerinde debug etmek için phpsh adlý bir komut satýrý kütüphanesi yazmýþlar. Ana bilgisayara yükleyip baðlandýðýnýzda komut satýrýndan php kodlarý yazýp çýktýsýný görüyorsunuz.
  • Versiyon yönetimi için Subversion ve git kullanýyorlar.

Yani, Facebook olmak istiyorsanýz altyapýnýzý da ona göre kuracaksýnýz.

Yorum (7)

Özellikle Hollywood filmlerinde izlemekten rahatsýz olacaðýnýz sahneler her zaman oluyor. Bazen çok güzel ve anlamlý olduðunu düþündüðünüz bir filmi içindeki bazý sahneler sebebiyle ailenizle izleyemiyorsunuz. O sahneleri izlerken geçmek için ileri sarma vb. aksiyonlar yapmak da iþin tadýný kaçýrýyor.

Þöyle bir program olsa, filmin istemediðimiz kýsýmlarýný belirtsek de izlerken otomatik olarak oralarý atlasa…

Aslýnda komut satýrýndan çalýþan ve özellikle Linux dünyasýnda çok meþhur olan video oynatýcýsý mplayer ile bu sorunu çözebiliyoruz. EDL (Edit Decision List) denilen bir özellik sayesinde, mplayer programýna videonun atlanacak bölümlerinin listesini bir dosya halinde veriyoruz. Video gösterilirken, belirttiðimiz kýsýmlarý atlayýp devam ediyor.

Bu iþ için öncelikle Not Defteri gibi bir metin editörü açýp, atlanacak saniyeleri satýrlar halinde gireceðiz. EDL dosyalarýnýn yapýsý þöyle:

[Baþlangýç saniyesi] [Bitiþ saniyesi] [Ýþlem(0-atla, 1-sessiz oynat)]

Örneðin,

210 240 0
1890 1960 0

Daha sonra bu dosyayý .edl uzantýsý ile harddiske kaydediyoruz. Tabii, listeyi oluþtururken saniye hesaplamalarýný yapmak gerekecek. Aslýnda mplayer’in -edlout parametresi ile bu iþlemler arayüz üzerinden de yapýlabiliyor ama çok kullanýþlý deðil.

Mplayer’ýn Windows tarafýnda kolay kullanýmý için bir çok arayüz yazýlmýþ durumda… Biz bu arayüzlerden SMPlayer yazýlýmýný kullanacaðýz. Görünüm deðiþtirebilme, Türkçe desteði, altyazý oynatabilme ve geliþmiþ özellikleri ile SMPlayer bir çok ticari video oynatýcý yazýlýmdan daha güzel.

Programý þuradan indirip, kuruyor ve çalýþtýrýyoruz. Videomuzu açýyoruz. Seçenekler (Options) menüsünden Bilgi ve özelliklere bak seçeneðine týklayarak video özellikleri penceresini açýyoruz. Mplayer seçenekleri (Mplayer options) sekmesinde Seçenekler (Options) bölümüne -edl edldosyasýnýnadý þeklinde dosyamýzý belirtiyoruz. (Örnek: -edl c:\film\atla.edl)

Artýk, videomuz oynarken belirttiðimiz saniyeleri atlayacaktýr.

Yorum (4)