WhatsApp’ın Sadece 32 Mühendisle…
Bu yazı, WhatsApp’ın kurucu ortağı Jan Koum’un inanılmaz hikayesini ve WhatsApp’ı ölçeklendirmek için kullanılan mühendislik tekniklerini anlatıyor.
Ocak 2008 – Kaliforniya, Amerika Birleşik Devletleri.
Yahoo’da bir mühendis olan Jan Koum, Facebook’ta çalışmak için başvurur ama reddedilir.
Bu onun sonu olmaz – hayatına devam eder.
Ertesi yıl bir iPhone alır ve yeni App Store’un büyük potansiyelini hemen fark eder.
Böylece, Yahoo’daki eski iş arkadaşlarından bazılarıyla birlikte bir anlık mesajlaşma uygulaması yapmaya karar verir. Ve ismini WhatsApp koyar. WhatsApp’ın arkasındaki vizyon, pahalı SMS’lerin yerini almak idi.
Her gün 1 milyon kişinin kaydolmasıyla WhatsApp’ın büyüme hızı şaşırtıcıydı.
WhatsApp, 450 milyon günlük aktif kullanıcıdan gelen 50 milyar mesajı günde destekleyebiliyordu. Ve bunu sadece 32 mühendisle başardılar.
Patlayıcı ürün büyümesi iyi bir sorun olsa da, Jan Koum ve WhatsApp ekibi, zorlukların üstesinden gelmek için en iyi mühendislik uygulamalarını benimsemek zorunda kaldı.
WhatsApp Mühendisliği
WhatsApp’ın aşırı ölçeklenebilirliği sağlamak için kullandığı mühendislik uygulamaları şunlardı:
1. Tek Sorumluluk İlkesi
Ürün odağını sadece ana özellik olan mesajlaşmaya verdiler. Reklam ağı veya sosyal medya platformu oluşturmaya uğraşmadılar. Ayrıca, her ne pahasına olursa olsun, özellik yığılmasını önlediler. Özellik yığılması, bir ürüne aşırı özellikler eklediğinizde ve kullanımı zorlaştırdığınızda meydana gelir. Bunun yanı sıra, WhatsApp’ın güvenilirliğine her şeyden daha fazla önem verdiler.
2. Teknoloji Yığını
WhatsApp sunucularının temel işlevlerini oluşturmak için Erlang kullandılar. Çünkü:
- Küçük bir ayak iziyle yüksek ölçeklenebilirlik sağlar
- Ve sıcak yüklemeyi destekler
Erlang’da iş parçacıkları yerel bir özelliktir. Ancak Java veya C++’da iş parçacıkları işletim sistemine aittir. Bu nedenle Erlang’da tüm CPU durumunu kaydetmeye gerek yoktur. Ve bu, bağlam değiştirmeyi daha ucuz hale getirir. Sıcak yükleme, sunucu yeniden başlatılmadan veya trafik yönlendirilmeden kod değişikliklerini dağıtmayı kolaylaştırır. Basitçe söylemek gerekirse, sıcak yükleme yüksek kullanılabilirlik sağlar.
3. Tekrar Tekerleği İcat Etmek Neden?
Tekerleği yeniden icat etmeyin – ya açık kaynak kullanın ya da ticari bir çözüm satın alın.
Ejabberd, Erlang’da yazılmış açık kaynaklı bir gerçek zamanlı mesajlaşma sunucusudur. Ve WhatsApp’ı ejabberd üzerine kurdular. Ayrıca, ihtiyaçlarını karşılamak için ejabberd’ın bazı temel bileşenlerini yeniden yazdılar. Bunun yanı sıra, WhatsApp, push bildirimleri sağlamak için Google Push gibi üçüncü taraf hizmetlerden yararlandı.
4. Kesintili Konular
Ürün kalitesini artırmak için kesintili konulara büyük önem verdiler. Kesintili konular, bir ürünün birçok bölümünü etkileyen ve ayrılması zor olan şeylerdir. Örneğin, hizmetlerin sağlığını izlemek ve uyarıda bulunmak. Ve sürekli entegrasyon ve sürekli teslimat ile yazılım geliştirme sürecini iyileştirdiler. Sürekli entegrasyon, kod değişikliklerinin düzenli olarak merkezi bir depoya birleştirilmesi sürecidir. Sürekli teslimat, kodun test veya üretim ortamına dağıtılması sürecidir.
5. Ölçeklenebilirlik
WhatsApp, maliyetleri ve operasyonel karmaşıklığı düşük tutmak için diyagonal ölçeklemeyi kullandı.
Yatay ölçekleme, kaynak havuzundaki makine sayısını artırma sürecidir.
Dikey ölçekleme, mevcut bir makinenin kapasitesini, örneğin CPU veya belleği artırma sürecidir.
Ve diyagonal ölçekleme, yatay ve dikey ölçeklemenin bir karışımıdır. Bilgisayar kaynakları hem dikey hem de yatay olarak eklenir. WhatsApp sunucularını FreeBSD işletim sistemi üzerinde çalıştırdılar. Çünkü Yahoo’da çalışırken FreeBSD ile önceki deneyimlere sahiptiler.
Ayrıca FreeBSD güvenilir bir ağ yığını sundu. Ayrıca, FreeBSD’yi, sunucu başına 2 milyon+ bağlantıyı barındıracak şekilde ince ayar yaptılar.
Ve dosyalar ve soketler gibi çekirdek parametrelerini değiştirdiler. Aniden artan trafiği ve hatalar için başlık alanı bırakmak için sunucuları fazla sağladılar. Örneğin, ağ bölümleri veya donanım arızaları gibi hatalar.
6. Uçan Tekerlek Etkisi
CPU, bağlam değişiklikleri ve sistem çağrıları gibi metrikleri ölçtüler. Sonra darboğazları tanımlayıp ortadan kaldırdılar. Ve bunu düzenli aralıklarla yaptılar. Sürekli geri bildirim döngüsü, WhatsApp’ın performansını büyük ölçüde iyileştirdi.
7. Kalite
Tek hata noktalarını belirlemek için yük testi kullandılar. Yük testi, sistemin beklenen yük altında performansını ölçme sürecidir. Ve yük testi için yapay üretim trafiği ve DNS yapılandırma değişikliklerini kullandılar.
8. Küçük Takım Büyüklüğü
Mühendisler arasındaki iletişim yolları, takım büyüklüğü arttıkça karekök olarak artar. Bu, verimlilik düşüşü için bir reçetedir.
Bu yüzden takım büyüklüğünü küçük tuttular – 32 mühendis. WhatsApp, piyasadaki en başarılı anlık mesajlaşma uygulamalarından biridir. 2014 yılında, Jan Koum’u reddeden aynı Facebook, WhatsApp’ı 19 milyar USD’ye satın aldı. Forbes’a göre, Jan Koum’un 2023’te net değeri 14 milyar USD’dir.
Hasan Aslan
Kaynak : https://substack.com/@systemdesignone
Neo Kim