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).
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.
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.
Hadoop dan Hive

Hadoop  adalah implementasi map-reduce open source yang  memungkinkan untuk  melakukan perhitungan data dalam jumlah besar.  Facebook menggunakannya  untuk analisis data (dan seperti yang kita  ketahui, Facebook memiliki  data dalam jumlah yang besar). 
Hive dikembangkan oleh Facebook, dan dengannya dimungkinkan untuk menggunakan query SQL terhadap Hadoop, sehingga lebih mudah bagi non-programmer untuk menggunakannya.
Hive dikembangkan oleh Facebook, dan dengannya dimungkinkan untuk menggunakan query SQL terhadap Hadoop, sehingga lebih mudah bagi non-programmer untuk menggunakannya.
Baik Hadoop dan Hive adalah open source dan digunakan oleh sejumlah layanan besar, misalnya Yahoo dan Twitter.
Thrift
Facebook  menggunakan beberapa bahasa yang berbeda untuk beberapa  layanannya. PHP  digunakan untuk front-end, Erlang digunakan untuk Chat,  Java dan C + +  juga digunakan di beberapa tempat (dan mungkin bahasa  lainnya juga).  
Thrift adalah cross-language framework yang dikembangkan secara internal untuk mengikat semua bahasa yang berbeda tersebut, sehingga memungkinkan komunikasi antar bahasa tersebut. Hal ini memudahkan Facebook untuk pengembangan lintas-bahasanya.
Thrift adalah cross-language framework yang dikembangkan secara internal untuk mengikat semua bahasa yang berbeda tersebut, sehingga memungkinkan komunikasi antar bahasa tersebut. Hal ini memudahkan Facebook untuk pengembangan lintas-bahasanya.
Varnish

Varnish  adalah akselerator HTTP yang bertindak sebagai penyeimbang  beban dan  juga konten cache yang kemudian dapat dilayani secepat  kilat. Facebook  menggunakan Varnish untuk melayani foto dan gambar  profil, penanganan  miliaran permintaan setiap hari. Seperti hampir  semua yang digunakan  Facebook, Varnish adalah open source.
Hal-hal lain yang membantu Facebook berjalan lancar
Kita  telah menyebutkan beberapa perangkat lunak yang membangun  sistem  Facebook dan membantu layanannya dengan benar. Tetapi penanganan  sistem  sebesar itu merupakan tugas yang kompleks. Berikut adalah  hal-hal yang  dilakukan Facebook untuk menjaga agar layanannya tetap  berjalan lancar.

Gradual releases and dark launches
Facebook  memiliki sistem yang mereka sebut Gatekeeper yang  memungkinkan mereka  menjalankan kode yang berbeda untuk sekumpulan  pengguna yang berbeda.  Ini memungkinkan Facebook untuk melakukan rilis  bertahap fitur-fitus  baru, pengujian A/B, mengaktifkan fitur tertentu  hanya untuk karyawan  Facebook, dll.
Gatekeeper  juga memungkinkan Facebook untuk melakukan sesuatu yang  disebut "dark  launches", yaitu untuk mengaktifkan unsur-unsur dari  fitur tertentu di  balik layar sebelum ditayangkan (tanpa sepengetahuan  pengguna). 
Hal ini berfungsi sebagai tes nyata dan membantu mengekspos kemacetan dan masalah-masalah lain sebelum fitur tersebut secara resmi diluncurkan. Dark launches biasanya dilakukan dua minggu sebelum peluncuran resmi.
Hal ini berfungsi sebagai tes nyata dan membantu mengekspos kemacetan dan masalah-masalah lain sebelum fitur tersebut secara resmi diluncurkan. Dark launches biasanya dilakukan dua minggu sebelum peluncuran resmi.
Profiling of the live system
Facebook  memonitor sistemnya secara cermat dan juga memantau  kinerja setiap  fungsi PHP dalam live production environment. Profiling  PHP ini  dilakukan dengan menggunakan sebuah tool open source yang  bernama  XHProf.
Gradual feature disabling for added performance
Jika  Facebook mengalami masalah kinerja, ada sejumlah tuas yang  secara  bertahap menonaktifkan fitur kurang penting untuk meningkatkan  kinerja  fitur utama Facebook.
Kalau  kita perhatikan, ternyata Facebook banyak menggunaka open  source untuk  membangun sistemnya. Tidak hanya menggunakan, Facebook  juga memberikan  kontribusi untuk perangkat lunak open source seperti  Linux, memcached,  MySQL, Hadoop, dan lainnya. 
Lebih daripada itu, Facebook juga menjadikan software-software yang dikembangkan secara internal oleh mereka sebagai open source. Contoh proyek open source yang berasal dari Facebook adalah HipHop, Cassandra, Thrift dan Scribe.
Daftar software open source di mana Facebook terlibat dalam pengembangannya dapat di lihat di halaman Facebook's Open Source.

Sumber :
zonapencarian.blogspot.com
Lebih daripada itu, Facebook juga menjadikan software-software yang dikembangkan secara internal oleh mereka sebagai open source. Contoh proyek open source yang berasal dari Facebook adalah HipHop, Cassandra, Thrift dan Scribe.
Daftar software open source di mana Facebook terlibat dalam pengembangannya dapat di lihat di halaman Facebook's Open Source.

Sumber :
zonapencarian.blogspot.com
No comments:
Post a Comment