32 poin oleh xguru 2022-07-18 | 7 komentar | Bagikan ke WhatsApp
  • Ringkasan isi wawancara Direktur Engineering Stack Overflow, Roberta Arcoverde, di podcast Scott Hanselman
  • Ia bergabung 8 tahun lalu sebagai software engineer, lalu menjadi staff engineer (tech lead), dan pada awal tahun ini beralih ke peran manajerial

S: Apa yang berubah setelah menjadi Direktur Engineering?

  • R: Saya jadi mengelola orang. Mengelola karier, membantu mereka berkembang. Juga memiliki visi strategis tentang ke mana kami harus melangkah
    Terus memperhatikan seperti apa arsitektur software kami, apakah arahnya mendukung pertumbuhan, dan apakah PR ini membawa kami ke tempat yang kami inginkan dalam 3 tahun ke depan, bukan hanya untuk saat ini.
  • S: Jadi Anda membuat rencana dan bertindak dengan perspektif yang lebih panjang. Agar tidak terkejut oleh perubahan teknologi.
  • R: Tepat sekali. Dan saya juga jauh lebih banyak melakukan meeting 1-on-1.
  • S: Di Microsoft juga sedang musim review sekarang, jadi selama beberapa hari isinya cuma meeting 1-on-1 dan evaluasi. Rasanya tidak menyenangkan karena isinya meeting terus. Untuk menyegarkan diri, apakah Anda juga sesekali melihat kode?
  • R: Ya, saya melihat kode. Saya sangat percaya bahwa manajer lini depan seperti saya juga harus menulis kode setiap hari. Menurut saya itu membantu menjaga kemampuan teknis secara pribadi.
    Itu juga membantu saat membimbing engineer junior, dan saat menilai dampak dari perubahan yang diusulkan engineer senior.
    Kalau terus menulis kode dan mengikuti ke mana arah software berjalan, saat ada redesign besar saya jadi bisa mengajukan 'pertanyaan yang tepat' agar mereka bisa menghasilkan hasil terbaik.

S: Seperti apa arsitektur Stack Overflow?

  • R: Stack Overflow agak unik. Terutama jika dibandingkan dengan situs besar lain yang mulai sekitar tahun 2008.
    • Saat ini kami punya codebase berusia 14 tahun,
    • dan menjalankannya di mesin on-prem di data center milik sendiri.
    • Kami belum pernah pindah ke cloud.
    • Ini juga aplikasi monolithic. Kami tidak memecahnya menjadi service atau microservice.
    • Kami juga punya web app multi-tenant. Berbasis .NET dan berjalan sebagai satu aplikasi tunggal di 9 web server.
    • Berjalan di IIS, dan satu server menangani 6.000 request per detik. (2 miliar PV per bulan)
  • S: IIS banyak ditinggalkan setelah Apache, NGINX, Kubernetes, dan lainnya naik daun. Anda sebenarnya bisa saja bergerak ke arah itu. Adakah hal-hal yang sengaja Anda abaikan? Dan adakah yang Anda pikir, “ini memang dibutuhkan oleh SO”?
  • R: Kami memang mengabaikan banyak di antaranya. Yang paling baru adalah semua hal terkait microservice dan Kubernetes.
    Alasan terbesar kami mengabaikannya adalah karena filosofi pengembangan SO yang paling kuat.
    Kami selalu memulai dari pertanyaan: "Masalah apa yang sedang ingin diselesaikan?"
    Masalah yang ingin diselesaikan alat-alat seperti itu bukanlah masalah yang kami hadapi.
    Misalnya, migrasi dari monolithic ke microservice atau services biasanya dilakukan untuk membagi tim dan melakukan scaling.
    Agar beberapa tim bisa bekerja di proyek yang sama tanpa saling bentrok, serta bisa melakukan deployment lebih cepat, dan sebagainya.
    Deployment cepat juga bukan masalah bagi kami. SO melakukan deployment beberapa kali sehari, hanya dalam 4 menit, dan jika ada masalah bisa rollback dengan cepat dalam hitungan menit.
    Saat ini lead time kami maupun waktu yang dibutuhkan untuk merge sangat baik, dan bukan sesuatu yang menyakitkan.
    Sekitar 50 engineer sedang mengembangkan platform Q&A ini
  • R: Pada 2014 jumlahnya 10 orang, dan saat itu semua orang mudah memahami seluruh codebase.
    Sekarang onboarding engineer baru memang mulai jadi lebih sulit.
    Mungkin pada suatu saat kami akan memisahkan modul tertentu, lalu ada tim khusus yang menanganinya tanpa harus memahami seluruh kode.
    Tapi kami belum sampai ke tahap itu. Kami belum mengalami masalah tersebut, dan kami pragmatis.

Arsitektur lainnya

  • Cache 2 lapis (memori dan web server)
  • Juga ada beberapa SQL Server: dengan RAM 1,5 TB sehingga 1/3 dari seluruh DB bisa diakses cepat dari RAM
    → Ini tampaknya konfigurasi yang sangat mahal dan sulit digunakan dengan murah di cloud
  • Halaman pertanyaan tidak di-cache. Meskipun hit rate-nya paling tinggi sehingga 80% trafik mengarah ke sana..
    → Dulu pernah mencoba cache dengan Redis, tapi hit/miss cache rate-nya tidak terlalu bagus
  • Waktu render halaman saat ini sekitar 20ms
  • StackExchange juga dijalankan secara multi-tenant di server yang sama. Satu aplikasi menangani seluruh 200 situs
    → Artinya, cukup deploy satu aplikasi maka berlaku ke semuanya
  • Rolling build di bawah HAProxy

7 komentar

 
galadbran 2022-07-31

Wah.... bagian tentang melakukan rolling build dengan haproxy cukup mengesankan, jadi penasaran bagaimana cara implementasinya.

 
galadbran 2022-07-31

Saya sempat membaca skrip podcast-nya, tetapi rasanya bagian tentang penggunaan haproxy hanya disebutkan singkat lalu lewat begitu saja. Melihat percakapannya berlanjut ke cerita soal health check dan bahwa mereka banyak melakukan monitoring, sepertinya mereka memang membangunnya dan mengelolanya sendiri dengan baik... kurang lebih seperti itu ^^;

 
roxie 2022-07-30

Saya penasaran bagaimana mereka bisa melakukan deployment dalam "4 menit".

 
ifmkl 2022-07-19

Saya juga pernah mengoperasikan server RAM 4 TB / server RAM 8 TB di perusahaan sebelumnya. Biaya pembangunannya memang luar biasa besar, tetapi saya benar-benar tidak merasa spesifikasi seperti itu bisa digantikan dengan cloud.

 
forteleaf 2022-07-26

Ya, sepertinya memang begitu.

 
nicewook 2022-07-18

Terima kasih atas ringkasannya.
Ada banyak bagian yang mengesankan.

  • Mereka menggunakan IIS, dan tidak memakai MSA atau K8s. Karena memang tidak diperlukan.
  • Konfigurasi RAM 1,5 TB adalah keunggulan yang dimiliki on-prem dibanding cloud.
 
xguru 2022-07-18

Ini wawancara yang cukup panjang, jadi saya merangkum di beberapa bagian. Silakan dengarkan keseluruhannya sambil merujuk ke transkrip!
Transkrip: https://app.podscribe.ai/episode/83433649