4 Ekim 2015 Pazar

GOOGLE 2 MİLYAR SATIRLIK KOD İÇERİYOR VE HEPSİ BİR YERDE





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