32 puan yazan xguru 2022-07-18 | 7 yorum | WhatsApp'ta paylaş
  • Scott Hanselman'ın podcast'inde Stack Overflow'nun mühendislik direktörü Roberta Arcoverde ile yapılan röportajın özeti
  • 8 yıl önce yazılım mühendisi olarak katıldı, ardından staff engineer (tech lead) oldu ve bu yılın başında yöneticiliğe geçti

S: Mühendislik direktörü olduktan sonra ne değişti?

  • R: Artık insanları yönetiyorum. Kariyerlerini yönetiyor, gelişmelerine yardımcı oluyorum. Ayrıca nereye gitmemiz gerektiğine dair stratejik bir vizyona sahibim
    Yazılım mimarisinin nasıl göründüğünü inceliyorum; büyüme yönünde ilerleyip ilerlemediğimizi, bu PR'ın sadece bugünü değil önümüzdeki 3 yıl içinde olmak istediğimiz yere doğru bizi taşıyıp taşımadığını sürekli takip ediyorum.
  • S: Yani daha uzun vadeli plan yapıp ona göre hareket ediyorsunuz. Teknolojideki değişimlere hazırlıksız yakalanmamak için.
  • R: Aynen öyle. Bir de daha fazla 1-on-1 görüşme yapıyorum.
  • S: Şu anda Microsoft'ta da değerlendirme dönemi; günlerdir sadece 1-on-1 görüşmeler ve performans değerlendirmeleri yapıyoruz. Sürekli toplantı olunca sıkıcı oluyor; siz de kafanızı toparlamak için koda bakıyor musunuz?
  • R: Evet, koda bakıyorum. Benim gibi birinci kademe yöneticilerin de her gün kod yazması gerektiğine güçlü biçimde inanıyorum. Bunun kişisel olarak teknik yetkinliği korumaya yardımcı olduğunu düşünüyorum.
    Bu, junior mühendisleri mentorlukla desteklemeye de yardımcı oluyor; ayrıca senior mühendislerin önerdiği değişikliklerin etkisini değerlendirmeyi de kolaylaştırıyor.
    Kod yazmaya ve yazılımın nereye gittiğini görmeye devam ettiğinizde, büyük yeniden tasarımlar sırasında onların en iyi sonucu çıkarabilmesi için 'doğru soruları' sormanıza yardımcı oluyor.

S: Stack Overflow'nun mimarisi nasıl?

  • R: Stack Overflow biraz sıra dışı. Özellikle de 2008 civarında başlayan diğer büyük sitelerle karşılaştırıldığında.
    • Şu anda 14 yıllık bir kod tabanımız var,
    • Kendi veri merkezimizdeki şirket içi makinelerde çalışıyoruz.
    • Hiç buluta geçmedik.
    • Ayrıca monolithic bir uygulamayız. Servislere ya da mikroservislere bölmedik.
    • Çok kiracılı bir web uygulamamız da var. .NET tabanlı ve 9 web sunucusunda tek uygulama olarak çalışıyor.
    • IIS üzerinde çalışıyor ve tek bir sunucu saniyede 6.000 isteği işliyor. (aylık 2 milyar PV)
  • S: Apache, NGINX ve Kubernetes'in yükselişiyle birlikte IIS kullananların sayısı çok azaldı. Siz de o tarafa yönelebilirdiniz; özellikle bilinçli olarak görmezden geldikleriniz var mı? Ya da 'bu Stack Overflow için gerekli' dediğiniz şeyler oldu mu?
  • R: Bunların çoğunu bilinçli olarak görmezden geldik. En yakın tarihli örnek, mikroservisler ve Kubernetes'le ilgili her şey.
    Bunu görmezden gelmemizin en büyük nedeni, Stack Overflow'nun en güçlü geliştirme felsefesi.
    Her zaman şu soruyla başlıyoruz: "Hangi problemi çözmeye çalışıyorsunuz?"
    Bu tür araçların çözmeye çalıştığı problemler, bizim karşılaştığımız problemleri çözmüyor.
    Örneğin monolithic yapıdan mikroservislere ya da servislere geçmek, ekipleri bölerek ölçeklendirmek için yapılır.
    Birden fazla ekibin aynı proje üzerinde çakışmadan çalışabilmesini ve hızlı dağıtım yapabilmesini sağlar.
    Ama hızlı dağıtım bizim için bir problem değildi. Stack Overflow günde birkaç kez, 4 dakikada deploy ediliyor ve bir sorun olursa birkaç dakika içinde hızla geri alınabiliyor.
    Şu anda lead time'ımız ya da merge süremiz gayet iyi ve sancılı bir süreç değil.
    Yaklaşık 50 mühendis Soru-Cevap platformunu geliştiriyor.
  • R: 2014'te 10 kişiydik ve herkesin tüm kod tabanını anlaması kolaydı.
    Şimdi ise yeni mühendislerin onboarding süreci zorlaşmaya başlıyor.
    Bir gün belli modülleri ayırıp, bunlara bakan özel ekipler kurabilir ve herkesin tüm kodu anlaması gerekmeyebilir.
    Ama henüz o noktaya gelmedik. Biz hâlâ o problemi yaşamıyoruz ve pragmatik davranıyoruz.

Diğer mimari unsurlar

  • 2 katmanlı cache (bellek ve web sunucusu)
  • Ayrıca birden fazla SQL Server var: 1,5 TB RAM sayesinde tüm veritabanının 1/3'üne RAM üzerinden hızlı erişim mümkün
    → Bunun, bulutta uygun maliyetle kullanılması zor olan çok pahalı bir kurulum olduğunu düşünüyor
  • Soru sayfaları cache'lenmiyor. En yüksek isabet oranına sahip oldukları için trafiğin %80'i oraya gidiyor ama...
    → Eskiden Redis ile cache'lemeyi denediler ancak hit/miss cache oranı pek iyi değildi
  • Şu an sayfa render süresi yaklaşık 20 ms
  • StackExchange de aynı sunucularda çok kiracılı olarak çalışıyor. Tek bir uygulama 200 sitenin tamamını işliyor
    → Yani tek bir uygulama deploy edildiğinde hepsine uygulanmış oluyor
  • HAProxy altında rolling build yapılıyor

7 yorum

 
galadbran 2022-07-31

Ooo…. haproxy ile rolling build yaptıkları kısım etkileyici; bunu nasıl gerçekleştirdiklerini merak ediyorum.

 
galadbran 2022-07-31

Podcast metnini okudum; haproxy kullanılan kısma kısa bir değinip geçiyorlar gibi hissettiriyor. Sohbetin health check ve epey yoğun izleme yaptıkları kısmına bağlanmasına bakılırsa, bunu doğrudan kendileri gayet iyi kurup işletiyorlar... gibi görünüyor ^^;

 
roxie 2022-07-30

"4 dakikada deploy"u nasıl yaptıklarını merak ediyorum.

 
ifmkl 2022-07-19

Ben de önceki şirkette 4 TB RAM’li sunucu / 8 TB RAM’li sunucu işletmiştim; kurulum maliyeti elbette inanılmaz yüksekti ama o özelliklerin bulutta gerçekten karşılanabileceğini de pek düşünmüyordum.

 
forteleaf 2022-07-26

Öyle görünüyor.

 
nicewook 2022-07-18

Özet için teşekkürler.
Oldukça etkileyici birçok nokta var.

  • IIS kullanıyorlar ve MSA ya da K8s kullanmıyorlar. Çünkü ihtiyaç duymuyorlar.
  • 1,5 TB RAM yapılandırması, on-prem’in buluta kıyasla sahip olduğu bir avantaj.
 
xguru 2022-07-18

Oldukça uzun bir röportaj olduğu için aralarda özetledim. Tamamını dinlerken metni referans alabilirsiniz!
Metin: https://app.podscribe.ai/episode/83433649