Apa itu Google File System? (Teknologi di balik Google)


Pernahkah anda membayangkan, sistem apa yang ada di balik mesin pencari Google? Bagaimana mereka menampung data-data yang mereka miliki, teknologi apa yang mereka gunakan, apakah virtualisasi? Cloud? Saya sering bertanya-tanya tentang hal itu. Butuh berapa komputer atau server seperti apa yang mereka gunakan? Seberapa besar storage yang dibutuhkan? Bagaimana mereka bisa menampung data yang sebegitu banyak dan besar? Jika menggunakan banyak storage dan perangkat server untuk menyimpan data tersebut, lalu bagaimana jika saja ada salah satu atau beberapa server atau storage yang rusak sekaligus? Bagaimana mereka menangani masalah tersebut? Dari banyak pertanyaan tersebut, setidaknya dengan menemukan dan membaca paper penelitian ini, sedikit banyak telah menjawab rasa penasaran saya.

Yak jawabannya adalah Google File System, apa itu? Google file system (GFS) adalah sistem file yang dikembangkan oleh Google secara khusus untuk mengakomodir kebutuhan khusus Google. GFS didesain untuk dapat memenuhi permintaan pemrosesan yang tumbuh semakin tinggi secara signifikan atau bisa disebut bertui-tubi sebagaimana Google butuhkan. GFS sebagaimana sistem terdistribusi lainnya memiliki kualifikasi yang tidak jauh dari:
  • Memiliki kemampuan yang dapat ditingkatkan (scale out)
  • Mampu memiliki performa yang bagus
  • Memiliki reliabilitas yang bagus, dan
  • Tingkat ketersedian yang tinggi.
Scale out sendiri dapat dibedakan menjadi dua jenis, scale out secara horizontal atau scale out secara vertical. Scale out secara vertical lebih kepada peningkatan kemampuan perangkat keras yang digunakan, misalnya saja sebelumnya menggunakan prosesor Intel i3 ditingkatkan menjadi i5 atau i7. Sedangkan scale out secara horisontal lebih kepada peningkatan kemampuan (baik pemrosesan atau media penyimpanan) dengan cara penambahan instance yang sejajar (jika diilustrasikan, seperti prinsip gotong royong di Indonesia), misal dari 1 server menjadi 2 server, menjadi 3 server dan seterusnya, dengan kemampuannya GFS mampu mengkoordinir banyak server sekaligus untuk dapat saling bekerja sama.  GFS juga dirancang untuk dapat berjalan di komputer server komoditi, alias server dengan spesifikasi yang mudah ditemukan di pasaran, bukan server yang didesain atau dipesan khusus untuk mengerjakan suatu pemrosesan atau penyimpanan. Keuntungannya adalah ketika mereka  (Google) membutuhkan peningkatan performa atau tambahan media penyimpanan, tinggal mereka beli server yang ada di pasaran, lalu mereka gabungkan dengan GFS, solusi yang mudah bukan? Dengan semakin banyak server yang terlibat, maka potensi kegagalan yang terjadi akan semakin besar, fitur GFS mampu menoleransi kegagalan tersebut, sehingga proses yang terjadi di dalamnya tidak akan terganggu, data yang tersimpan di dalamnya juga tidak rusak sehingga selalu tersedia (Good Reliability and High Availability).

Arsitektur GFS
GFS memiliki arsitektur master-slave, satu master yang mengelola beberapa slave (chunk server). Data yang disimpan di dalam GFS akan di pecah-pecah ke dalam beberapa bagian (chunk) yang kemudian di replikasi dan di simpan di seluruh chunk server yang tersedia, sedangkan lokasi dan metadata file yang ditaruh di GFS tersebut akan disimpan oleh server master dalam bentuk namespace. Ketika ada chunk server yang mati/rusak, maka chunk server yang lain yang menyimpan data yang sama akan segera mereplikasi ulang, untuk menjaga ketersediaan data yang disimpan. Sedangkan apabila server Master rusak, maka GFS akan mendelegasikan peran master tersebut ke master bayangan (shadow master).   



Untuk meningkatkan performa GFS, setiap klien yang ingin melakukan operasi baca tulis, tidak harus melalui server master,  server master hanya sebagai pendelegasi saja. Pada operasi baca:

  1. Klien akan menghubungi master untuk menanyakan lokasi file yang akan di baca
  2. Master akan memberitahu lokasi file berada di chunk server mana saja
  3. Setelah klien mendapatkan lokasi file, maka klien akan langsung menghubungi chunk server untuk membaca data yang dibutuhkan. 


Pada operasi menulis juga berlaku mirip seperti itu:

  1. Klien akan menghubungi master untuk meminta lokasi chunk server yang dapat ditulisi data
  2. Master akan memberitahu lokasi chunk server mana saja yang dapat ditulis kepada klien
  3. Setelah klien mendapatkan lokasi chunk server yang dapat ditulisi, maka klien akan langsung menghubungi chunk server untuk menulis data yang dibutuhkan.

Kedua operasi tersebut dapat mengurangi efek bottleneck kepada master, karena seluruh komunikasi tidak perlu melewati master, master hanya berperan sebagai pendelegasi dan pencatat lokasi data sehingga klien dapat langsung berinteraksi kepada chunk server.

Peran master sebenarnya tidak hanya itu, master juga berfungsi untuk memastikan bahwa chunk server dalam keadaan "hidup", apabila diketahui ada chunk server yang mati, maka master akan meminta chunk server lainnya yang menyimpan data sama dengan chunk server yang mati untuk kembali mereplikasi data tersebut hingga ke jumlah semula, hal itu untuk meningkatkan ketersediaan data yang disimpan di dalam GFS.

Ada salah satu proyek Apache yang terinspirasi oleh kemampuan GFS, yaitu Hadoop. Berbeda dengan GFS yang merupakan perangkat lunak propertiary milik Google dan tidak bisa sembarang orang menggunakannya atau mendapatkannya, Hadoop bersifat open source dan dapat digunakan oleh siapapun tanpa mengeluarkan biaya lisensi. Hadoop sendiri dikembangkan oleh yayasan Apache Foundation dengan tujuan untuk menciptakan environment yang sama dengan GFS. Hadoop sendiri merupakan standart platform untuk pemrosesan bagi banyak perusahaan yang mengelola Big Data.

Mungkin di tulisan selanjutnya saya akan membahas tentang Hadoop, bagi yang tidak sabar untuk mengetahui apa itu Hadoop, mungkin bisa langsung berkunjung ke website resminya di hadoop.apache.org

Comments