Teknologi yang Digunakan Stack Overflow: Bagian 2

1 min read

Disclaimer
Saya bekerja di AWS, semua opini adalah dari saya pribadi. (I work for AWS, my opinions are my own.)
Teknologi yang digunakan Stack Overflow
Stack Overflow Logo (Sumber: stackoverflow.com)

TeknoCerdas.com – Salam cerdas untuk kita semua. Pada tulian bagian kedua tentang teknologi yang digunakan Stack Overflow, TeknoCerdas akan melanjutkan pembahasan komponen lain yaitu: Tag engine, HA Proxy dan Elasticsearch server.

Jika anda belum membaca bagian pertama silahkan ikuti tautan berikut.

Pada bagian akhir tulisan ini akan dibahas siapa saja yang berpengaruh dalam hal teknis pada pengembangan Stack Overflow.

Menggunakan 3 Tag Engine Server

Stack Overflow Tag Engine Server
Stack Overflow Tag Engine Server (Sumber: Stack Exchange)

Tag engine server merupakan salah satu komponen penting dalam susunan teknologi Stack Overflow. Tag engine adalah sebuah layanan khusus yang dibuat karena kompleksitas query pada SQL Server menyebabkan performa Stack Overflow melambat. Hingga akhirnya diputuskan dibuatlah Tag engine khusus untuk mengatasi masalah performa tersebut.

Tag engine server ini menggunakan 3 buah mesin dengan masing-masing memiliki kapasitas RAM 64GB. Utilitas penggunaan CPU dari server ini cukup rendah dengan angka rata-rata 3%. Sedangkan beban CPU tertinggi ada pada angka 5%. Lagi-lagi sebuah utilitas yang rendah.

Menggunakan 3 Elasticsearch Server

Stack Overflow Elasticsearch Server
Stack Overflow Elasticsearch Server (Sumber: Stack Exchange)

Elasticsearch digunakan untuk fitur pencarian yang ada pada Stack Overflow. Jadi jika pengguna mengetikkan kata kunci di seach box maka yang melayani adalah Elasticsearch. Jika pencarian menggunaan tag maka diarahkan ke tag engine namun jika pencarian secara umum maka relevansi yang diperlukan untuk itulah digunakan Elasticsearch.

Stack Overflow menggunakan 3 server untuk Elasticsearch. Masing-masing server memiliki RAM berkapasitas 196GB. Server ini menangani 34 juta pencarian per hari dengan total dokumen index mencapai 528 GB.

Utilitas penggunaan CPU tercatat rata-rata adalah 7% dengan angka tertinggi pada 20%. Dari server-server yang lain server ini adalah utilitasnya termasuk yang cukup tinggi.

Menggunakan 2 HAProxy Server

Stack Overflow HAProxy Server
Stack Overflow HAProxy Server (Sumber: Stack Exchange)

Pada sisi load balancer Stack Overflow menggunakan HAProxy untuk melakukan distribusi lalu lintas paket yang masuk. HAProxy juga bertinga sebagai SSL termination. Awalnya StackOverflow menggunakan Nginx kemudian berganti ke HAProxy.

Terdapat 2 HAProxy server yang digunakan oleh Stack Overflow. Satu server utama dan lainnya adalah fail over server. Dimana ketika HAProxy utama mati makan otomatis HAProxy fail over yang mengambil alih.

HAProxy menangani lebih dari 5,5 milyar request per bulan dengan angka tertinggi tercatat pada 4500 request per detik. Pada web socket, HAProxy menghandle 600 ribu socket aktif dengan angka tertinggi pada 15000 socket per detik.

Utilitas penggunaan CPU pada HAProxy rata-rata cukup tinggi dibandingkan dengan layanan Stack Overflow yang lain. Rata-rata penggunaan CPU pada angka 10% dan angka tertinggi tercatat pada 18%.

Dibalik Layar Pengembangan Stack Overflow

Stack Overflow awalnya didirakan oleh Jeff Atwood penulis yang populer dengan blog CodingHorror dan juga Joel Spolsky pencipta dari Trello. Beberapa kali Jeff Atwood dan timnya menulis hal-hal teknis seputar tantangan dalam membangun Stack Overflow.

Berikut ini TeknoCerdas rangkum beberapa tulisan yang berhubungan tantangan pengembangan pada Stack Overflow.

Kesimpulan dari beberapa referensi diatas adalah Stack Overflow tidak menggunakan cloud dan memilih untuk mengelola sendiri servernya karena mereka ingin menjamin performa tetap konsisten dengan tidak bergantung pada pihak ketiga.

Utilitas yang server yang rendah karena pengembang Stack Overflow tahu bagaimana melakukan optimasi kode sehingga sumber daya yang dibutuhkan pun tidak banyak. Melakukan profiling dari kode sangat diperlukan untuk mencari sumber masalah utama ketika optimasi dilakukan.