Google ne kadar büyük? Bu soruya gelir veya hisse senedi fiyatı
veya müşteriler veya metafizik etki açısından cevap verebiliriz. Ama hepsi bu değil. Google, diğer şeylerin yanı sıra, geniş
bir bilgisayar yazılımı imparatorluğudur. Biz bu soruyu kod açısından
cevaplayabilirsiniz.
Google'dan Rachel Potvin, Pazartesi günü,
Silikon Vadisi’nde bir mühendislik toplantısında cevaba oldukça yaklaştı. O, Google Arama’dan Google Gmail'e ve
Google Haritalar’a kadar tüm Google İnternet hizmetlerini çalıştırmak için
gerekli yazılımın 2 milyar satır kod kapsadığını tahmin ediyor. Buna karşılık, 1980’lerden beri
geliştirme aşamasında olan tek bir bilgisayar için yapılmış en karmaşık yazılım
araçlarından biri olan Microsoft'un Windows işletim sistemi, 50 milyon satır
civarındadır.
Yani, Google’ı oluşturmak kabaca Windows işletim sistemini 40 defa
tekrar oluşturmaya eşdeğerdir.
'Sayılar kesinlikle şaşırtıcı,' diyor Sam Lambert, GitHub
Sistemler Müdürü.
Karşılaştırma
düşündüğünüzden çok daha yerinde. Windows'u destekleyen kod gibi, Google’ı
çalıştıran 2 milyar satır da bir nesnedir. Onlar, Google Arama, Google Haritalar,
Google Belgeler, Google +, Google Takvim, Gmail, YouTube ve diğer her Google
internet hizmetlerini çalıştırıyor ve yine de bütün 2 milyar satır 25.000
Google mühendisleri tarafından kullanılabilen tek bir kod deposunda
bulunmaktadır. Şirket bünyesinde, Google koduna büyük bir işletim sistemi gibi
davranıyor. Potvin
:’Ben bunu ispat edemesem de, bunun dünyanın herhangi bir yerinde kullanılan en
büyük tek depo olduğunu tahmin ediyorum,’ diyor.
Google uç bir durumdur. Fakat bu örnek bizim yazılımımızın
İnternet çağında ne kadar karmaşıklaştığını ve kodlama araçları ve felsefelerimizi
bu karmaşıklığı karşılamak için ne kadar değiştiğini gösteriyor. Google'ın
devasa deposu yalnızca Google’daki kodlayıcılar için kullanılabilir. Ama bir bakıma, mühendislerin devasa
miktarlardaki kodu etraflıca İnternetle paylaşabildiği halka açık kaynak deposu
olan GitHub’a benziyor. Biz
düzenli olarak büyük ölçekte kod işbirliğinde olduğumuz bir dünyaya doğru
ilerliyoruz. Bu
modern Internet hizmetlerinin hızlı evrimine ayak uydurabileceğimiz tek yoldur.
GitHub’da sistemler müdürü Sam
Lambert: ‘Google yaptığı gibi 25.000 geliştirici olması, kodları farklı grup
becerileri olan farklı grup insanlarla paylaşılması anlamına geliyor,’ diyor. ‘Ama, küçük bir şirket olarak, siz
GitHub ve açık kaynak kullanarak aynı avantajın bir kısmını elde edebilirsiniz. Bir söz vardır: ‘Bir gelgit tüm gemileri yükseltir.’
2 milyar satırlık tek parça
bir yapıyı oluşturmak ve işletmek kesinlikle basit bir iş değildir. Lambert: ‘Bu bir teknik meydan okuma-büyük
bir beceriklilik olmalı," diyor. ‘Sayılar kesinlikle şaşırtıcı.’
GitHub’ın dehasının bir
kısmı, kodlama yapanlara kolayca kod paylaşabilme ve işbirliği yapabilme imkanı
sağlamasıdır. Ama
GitHub tek bir yazılım projesini barındırmıyor. Milyonlarca projeyi kapsıyor. Google birçok projeyi bir ortamda
birleştirerek, bir adım daha ileri gidiyor. Birçok mühendis arasında bu kadar çok kodla
oynamanın zorluğu göz önüne alındığında, bu biraz çılgınca görünebilir. Ama Potvin’e göre bu işe yarıyor.
Piper’ı Dinleyin:
Temelde, Google, tüm bu
kodla oynamak için kendi ‘kontrol sistemi versiyonu’nu oluşturdu. Sistemin adı Piper ve o Google’ın tüm
çevrimiçi hizmetlerini çalıştırmak için oluşturduğu engin çevrimiçi
altyapısından geçiyor. Potvin
göre, sistem 10 farklı Google veri merkezini kapsıyor.
Bu sadece şirket içindeki hemen
her mühendisin ulaşabildiği tek bir sistem içinde tüm 2 milyar satır kodun toplanması
değil. Bu sistem Google mühendislerine sayısız
projeler arasında kod kullanmak ve birleştirmek için alışılmadık bir özgürlük
veriyor. Potvin: ‘Yeni bir projeye başladığınızda,
zaten ulaşabildiğiniz zengin kütüphanelere sahipsinizdir. Hemen hemen her şey
zaten yapılmıştır,’ diyor. Dahası,
mühendisler tek bir kod değişikliği yapabilir ve anında tüm Google hizmetlerine
bunu dağıtabilir. Bir
şeyi güncellerken, onlar her şeyi güncelleyebilirler.
Google uç bir durumdur. Fakat bu örnek bizim yazılımımızın
İnternet çağında ne kadar karmaşıklaştığını gösteriyor.
Bu sistemde sınırlamalar
vardır. Potvin Google'ın PageRank arama
algoritmasına benzeyen bazı yüksek hassasiyetli kodların sadece belirli
çalışanlar için ulaşılabilir olan ayrı depolarda bulunduğunu söylüyor. Ve onlar
internette çalışmadığı ve çok farklı şeyler oldukları için, Google mağazaları iki
cihaz işletim sistemleri olan -Android ve Chrome- için ayrı versiyon kontrol
sistemlerinde kodları vardır. Ama
çoğunlukla, Google kodu yazılım yapıtaşları, fikirleri ve çözümlerinin serbest
akışını sağlayan bir bütündür.
Bot Faktörü
Lambert’in dediği gibi,
böyle bir sistemi oluşturmak ve çalıştırmak bir şeyi yapabilme bilgisinin
yanında büyük miktarda işlem gücü gerektirir. Piper yaklaşık 85 terabaytlık veriyi
kapsıyor (yani 85,000 gigabayt) ve Google'ın 25.000 mühendisi depoya her gün yaklaşık
45,000 değişiklik yapıyorlar. Yani
ciddi bir hareketlilik var. Linux
açık kaynak işletimi 40000 yazılım dosyası arasında 15 milyon satırlık kod
kapsarken, Google mühendisleri her hafta 250.000 dosya arasında 15 milyon satırlık
kod değiştirirler.
Aynı
zamanda, Piper, insan kodlayıcılardan yükün çoğunu kaldırmak için çalışmalı. İnsanların
bütün bu kodu anladıklarını; yani kod değişikliklerinde birbirlerinin alanlarına
girmemelerini; onların kolayca depodan böcek ve kullanılmayan kodları kaldırabileceğini
sağlamak zorundadır. Tüm bunlar çok zor olduğu için,
aslında insanlardan bu işin bir kısmı alınmalıdır. Artık Google, Perforce denilen
önceki sürüm kontrol sisteminden Piper’a döndü. Otomatik robotlar işlerin
çoğunu hallediyor.
Bu, robotların kod yazdığı
anlamına gelmiyor. Ama
şirketin yazılımını çalıştırmak için gerekli olan veri ve yapılandırma
dosyalarının birçoğunu üretiyorlar. Potvin: ‘Kod sağlığını korumak için toplu
bir çaba göstermek gerekir,’ diyor. ‘Ve bu kod sağlığını sadece insanlar
değil aynı zamanda robotlar da sağlıyorlar.’
Herkes için Piper
Diğerleri de aynı tür bir
sistemden yararlanabilir mi? Kesinlikle. Ve yararlanıyorlar da. Ana Facebook uygulaması 20 milyon
satırlık kodu kapsıyor ve şirket tüm olaya tek bir proje gibi davranıyor. Diğerleri aynı şeyi daha küçük ölçekte
yapıyorlar. Firmalar
bir Google ya da Facebook’un boyutuna yaklaştıkça, lojistik devreye girebilir. Ancak Google ve Facebook bunu herkes için
değiştirmenin yollarını arıyorlar.
İki internet devi büyük
ölçekte kod kullanmak için herkesin kullanabileceği açık kaynak versiyonu kontrol
sistemi üzerinde çalışıyorlar. Bu Mercurial
denilen mevcut bir sistem üzerine kurulu. Potvin: ‘Biz Google deposunun
büyüklüğüne Mercurial ölçeklendirip ölçeklendiremeyeceğimizi görmek için
çalışıyoruz,’ diyor. Potvin, Facebook’taki kodlama işini denetlemeye yardımcı
olan Google’ın programlama gurusu Bryan O’Sullivan ve diğerleri ile el-ele çalıştığını
belirtiyor.
Bu durum aşırı görünebilir. Sonuçta, çok az şirket Google veya
Facebook bugünkü kadar kod kullanıyorlar. Ama yakın gelecekte, onlar da
kullanacaktır.
Hiç yorum yok:
Yorum Gönder