Minggu, 25 Maret 2012
Software apa saja yang digunakan Facebook
Tantangan besar bagi engineer Facebook adalah menjaga agar situs tetap hidup dan berjalan lancar meskipun menangani hampir setengah miliar pengguna aktif. Artikel ini mencoba melihat beberapa perangkat lunak dan teknik yang mereka gunakan untuk mencapai hal tersebut.
Skala tantangan Facebook
Sebelum kita masuk ke hal yang lebih detail, berikut adalah beberapa fakta sebagai gambaran tentang skala tantangan yang harus diurusi Facebook :
Facebook melayani 570 miliar tampilan halaman per bulan (menurut Google Ad Planner).
Foto di Facebook lebih banyak daripada gabungan semua situs foto lainnya.
Lebih dari 3 milyar foto di-upload setiap bulannya.
Facebook melayani 1,2 juta foto per detik. Ini tidak termasuk gambar dilayani oleh CDN Facebook.
Lebih dari 25 miliar konten (status update, komentar, dll) yang di-share setiap bulan.
Facebook memiliki lebih dari 30.000 server (jumlah ini adalah data tahun lalu!)
Software di Balik Facebook
Dalam beberapa hal Facebook masih merupakan situs yang berbasis LAMP (sejenisnya), namun diubah dan diperluas operasinya dengan memasukkan banyak elemen dan layanan lain, dan dimodifikasi pendekatannya menjadi seperti yang ada saat ini.
Sebagai contoh:
* Facebook masih menggunakan PHP, tetapi telah dibuat compilernya sehingga dapat diubah menjadi kode asli pada server webnya, sehingga meningkatkan kinerja.
* Facebook menggunakan Linux, tetapi telah dioptimalkan untuk keperluan sendiri (terutama dalam hal jaringan).
* Facebook menggunakan MySQL, tetapi terutama sebagai key-value persistent storage, moving joins and logic ke server web karena optimasinya lebih mudah dilakukan di sana (di “sisi lain” dari memcached).
Lalu ada custom-written systems, seperti Haystack, sebuah object store yang sangat scalable digunakan untuk melayani foto-foto di Facebook yang banyak sekali, atau Scribe, sistem logging yang dapat beroperasi pada skala Facebook.
Sekarang mari kita bahas (sebagian dari) perangkat lunak (software) yang digunakan Facebook dalam Menyediakan situs jejaring sosial terbesar di dunia.
Memcached
Memcached saat ini menjadi salah satu perangkat lunak paling terkenal di internet. Ia merupakan sistem caching memori terdistribusi yang digunakan Facebook (dan banyak situs lainnya) sebagai lapisan caching antara server web dan server MySQL (karena akses database relatif lambat).
Selama bertahun-tahun, Facebook telah berkali-kali melakukan optimasi pada memcached dan perangkat lunak sekitarnya (seperti mengoptimalkan penumpukan jaringan).
Facebook menjalankan ribuan server memcached dengan puluhan terabyte data cache pada satu titik waktu. Kemungkinan ini merupakan instalasi memcached terbesar di dunia.
HipHop for PHP
PHP, sebagai scripting language, relatif lambat bila dibandingkan dengan kode yang berjalan secara native di server. HipHop mengubah PHP menjadi kode C++ yang kemudian dapat dikompilasi untuk menghasilkan performa yang lebih baik.
Hal ini telah memungkinkan Facebook untuk mengoptimalkan server webnya karena ia sangat bergantung pada PHP untuk melayani konten.
Sebuah tim kecil engineer (awalnya hanya tiga orang) di Facebook menghabiskan 18 bulan mengembangkan HipHop, dan sekarang telah di produksi.
Haystack
Haystack adalah sistem penyimpanan/pencarian foto berkinerja tinggi pada Facebook (Sesungguhnya Haystack adalah sebuah penyimpanan object, sehingga tidak menyimpan foto). Ia mengerjakan kerja berat, ada lebih dari 20 miliar foto yang diunggah di Facebook, dan masing-masing disimpan dalam empat resolusi yang berbeda, menghasilkan lebih dari 80 miliar foto.
Dan hal tersebut bukan hanya tentang kemampuan menangani miliaran foto, kinerja juga sangatlah penting. Seperti yang telah disebutkan sebelumnya, Facebook melayani sekitar 1,2 juta foto per detik, angka yang tidak termasuk gambar/foto dilayani oleh CDN Facebook.
BigPipe
BigPipe adalah sistem layanan halaman web dinamis yang dikembangkan oleh Facebook. Facebook menggunakannya untuk melayani setiap halaman web dalam beberapa bagian (disebut “pagelets” untuk menghasilkan kinerja yang optimal.
Misalnya, jendela chat diambil secara terpisah, feed berita diambil secara terpisah, dan seterusnya. Pagelets ini dapat diambil secara paralel, sehingga kenerja tetap terjaga, dan juga memungkinkan user mengakses situs dengan baik meskipun beberapa bagian dinonaktifkan atau rusak.
Cassandra
Cassandra adalah sistem open source yang berfungsi sebagai menejemen database terdistribusi. Facebook kemudian mengembangkannya dengan NoSQL dan menggunakannya untuk fitur Inbox Search. Selain facebook, sejumlah layanan lain juga menggunakannya, misalnya Digg.
Scribe
Scribe adalah sistem logging fleksibel yang digunakan secara internal oleh Facebook untuk banyak tujuan. Ia dikembangkan untuk menangani logging pada Facebook, dan secara otomatis menangani kategori logging baru yang muncul...
refrensi info: http://cybermanado.blogspot.com/2011/06/daftar-software-yang-digunakan-facebook.html
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar