Ana içeriğe atla

Bilgi çağında otomasyon devrimi

Sanayi devrimi başladığında üretim ağırlıklı olarak el emeğine dayanmaktaydı. Önce değişik tipteki motorların icat edilmesi, sonrasında bu motorların yardımı ile üretimin maliyetinin büyük oranda düşmesi ile dünyada sosyal, kültürel, siyasi ve ekonomik alanda büyük değişimler meydana geldi. Bu değişimlerin somut halini fabrikalarda gördük. Fabrikaya giren hammadde makinalar yardımı ile ürüne dönüşüyordu. Yirminci yüzyıl boyunca fabrikalardaki bu süreçlerde insan emeği karşılığı ödenen ücretin toplam maliyet içindeki payı otomasyon ile her geçen sene biraz daha azaldı. Artık içeceklerimiz kocaman fabrikalarda otomasyonun verdiği olanaklarla birkaç kişi tarafından üretiliyor. Arabalar robotlar tarafından monte edilip üretim hattında ilerliyorlar.
 Bütün bu değişimin benzerinin bilgi çağında da yaşandığını görmekteyiz. 1950 li yıllardan itibaren motorlara benzer şekilde ortaya çıkan bilgisayarlar, bilgi üretimi alanında insan emeğinin her geçen yıl daha da azaldığını gördüğümüz bir sürecin içerisinde ilerliyor. Bilgi devriminin somut hali olan Bilgi Teknolojileri veya Bilişim Şirketlerinin, veriyi hammadde olarak aldığı ve bilgisayarlar yardımı ile ürüne dönüştürdüğü bir dönemin içerisindeyiz. Veriyi işleyen teknoloji şirketlerinin artan rekabet ile maliyetleri azaltmak, yeni ürünler çıkartmak için sanayi devrimindeki sürece benzer olarak otomasyona daha fazla yer verdiğini de görmekteyiz.

Bizde durum

 İşte tam bu noktada, yazılım dünyasının sanal robotları olan schedulerların tarih sahnesinde gittikçe daha ön plana çıkmaya başlamaları bir tesadüf değil şüphesiz. Bunu 2008 de görüp yerli bir scheduler yapma fikrini hayata geçirmeye giriştiğimizde, Bilişim dünyamızdan birçok arkadaşımız “Windows un scheduler ı var, Unix de de cron var ne gerek var scheduler yazmaya” gibi yorumlarda bulunmuşlardı. 2008 de kurduğumuz Likya şirketinde, Tlos ismini verdiğimiz scheduler ın üretilme hikayesi bu şekilde başladı. Önce basit bir ETL sürecini yöneten komut satırından çalışan bir scheduler ile başlayan çalışmalarımız, Java tabanlı bir ürün olarak yıllar içinde gelişti. Windows ve Unix ortamlarında bağımlılıkları olan işleri çalıştırabilen ve yönetmek için web ara yüzü olan bir ürüne dönüştü. Bu ürün Türkiye de bazı şirketlere satıldı ve yıllar boyunca kullanıldı. Bu süreçte, 2010 yılı civarında işleri yönetmenin tek bir makinada yapılmasının kısıtları ve çalıştırılacak işlerin sayısının sürekli artmasını da göz önüne alarak Dağıtık İş Yükü Otomasyonu ile ilgili bir proje başlattık. Projede değişik aşamalarda görev alan yaklaşık on kişilik bir ekiple toplamda iki yıl kadar süren bir geliştirme sürecine girdik. Bu süreçte, Türkiye de uluslararası çapta rekabet gücü olan bir yazılım geliştirmenin ne kadar zor bir iş olduğunu ve devletten özel sektöre kadar bir yelpazede yönetenlerin söyledikleri ile gerçekte yaptıklarının ne kadar farklı olduğunu fiili olarak yaşadık. Sonuçta ürünün ilk versiyonunu bitirdik ama biz de kaynaklarımızı tüketmiştik. Finansal olarak destek arayışlarımız sonuçsuz kaldı. Bizim de şirket olarak bazı hatalarımız oldu ama böyle iddialı bir ürün için hata yapmadan da ilerlemenin olanaksız olduğunu zaman geçince insan daha iyi anlıyor. Sonuçta iyi işler çıkaran bu ekip dağıldı ve kendi başının çaresine bakmak durumunda kaldı.

Dünyada durum

Tabii bu süreçte bir scheduler ın çok detaylı mimarisi ve çalışma sistemi için tamamen kendi ürettiğimiz bir yapı kurduğumuz için çok ciddi bir know-how oluşturduk. Bu açıdan yıllarını veri işleme ve veri madenciliği ile uğraşarak geçiren bir kişi olarak, büyük veri adı altında veri işleme konusunda yapılanları incelediğimde, Hadoop un ve benzer frameworklerin gerçekte çok özel işler çalıştırmak için geliştirilmiş birer scheduler olduklarını görmem fazla vaktimi almadı. İşin teknik detayını bilenler zaten farkındalar. Ben burada farkında olmayanlar için teknolojiyi takip etmek ile kullanmak arasındaki farkı anlamalarını umarak biraz detay vermek istiyorum.
İşlerin bilgisayarlarda otomatik olarak çalıştırılması için kullanılan sistemlere eski tabiri ile scheduler denmektedir. Buna yeni terimlerle iş yükü otomasyonu (workload automation) denmesinin sebebi, yeni nesil scheduler ların iş yükünü kaynakların verimli olarak kullanılması açısından akıllı bir şekilde dağıtabilmeleridir.
Dünyada schedulerlar startejik ürün olarak görülmektedir. Bu nedenle her gelişmiş ülkenin kendi scheduler ı vardır dersek yanlış yapmayız. Bunun sebebi büyük şirketlerin scheduler olmadan günlük operasyonlarını yürütemeyecekleri gerçeğidir. Bunun istisnası yoktur. Bu nedenle umarım ileride bu konuda ülkemizde de bazı adımlar atılır.

Büyük veri işlemede otomasyon

Daha önceleri veri işlemede özellikle veri tabalarında kullanılan ETL süreçleri ön planda olduğundan, scheduler lar ticari hayatta ağırlıklı olarak veri ambarları, veri tabanlarının işletilmesi ile, birazda sistem güncellemeleri gibi kullanımları ile gündemdeydi. Büyük veri işlemede Hadoop un ve problem çözme tarzı dağıtık mimari üzerinde çalışan Map-Reduce (MR) un ön plana çıkması ile bu gündem oldukça değişti.

Hadoop ile veri işlemede otomasyon

Hadoop un v1 olarak bildiğimiz eski versiyonunda işlerin yönetimi yani çalışmaya başlaması, bağımlılıklarının kontrolü, hatalı bitmesi durumunda ne yapılacağı gibi detaylar ile işlere kaynak ataması yapılması yani workload management aynı yapı içinde yapılmaya çalışılıyordu. Hatta workload management ikinci plandaydı denebilir.
Hadoop un v2 yani yeni versiyonunda temel değişiklik bu iki yapının birbirinden ayrılmasıdır. Bunun yazılım mimarisi açısından anlamı şu; mimariye işlerin kaynak yönetimini yapan bir katman eklenmiş oldu. Bu katman bir işin cluster da hangi node üzerinde çalıştırılacağına karar veren mekanizmayı barındırıyor. Bunun için bütün kaynaklardan sürekli bir şekilde kaynak kullanımı ile ilgili veri alması ve bunları değerlendirmesi gerekiyor. Yani, CPU, Harddisk, RAM kullanımı gibi bilgileri istenen periyotlarla almak ve gerçek zamanlı olarak bu verileri değerlendirmek için bir yapı gerekiyor ve özellikle işlerle ilgili SLA (Service Level Aggrement) lerin bu noktada dikkate alınması gerekiyor. Yani basitçe, önceliği olan bir işe öncelik verilmeli, ya da en az 1GB bellek isteyen bir işi bunun altında memory si olan bir kaynağa yönlendirmemeli vb. Bu katmanı yöneten yazılıma Hadoop eko sisteminde YARN ismi verildi. Diğer bir katman ise MR işlerinin çalıştırıldığı katman.

Kaynak yönetimi

Bu basit gibi görünen değişikliğin önemli kazanımları oldu. Kaynak yönetimi yapan başka bir yazılımı YARN ın yerine koyma fırsatı çıktı. Bunun bildiğimiz iki örneği Kaliforniya Üniversitesi, Berkeley'de geliştirilen sonrasında Twitter ın kullanma kararı alarak geliştirmesine destek verdiği açık kaynak dünyasının yeni sayılabilecek yıldızlarından Mesos ve Google da Borg ismi verilen cluster yönetim sisteminin açık kaynak versiyonu olan Kubernetes tir. Google, Borg u uzun zaman kullandığı ve yeni ihtiyaçlar ortaya çıktığı için "yeni nesil Borg" diye nitelenen Omega ismi verilen yazılım üzerinde çalışmaktadır. Bu ürünler tamamen kaynak yönetimi ve işlere kaynak ataması yapılması, yoksa kaynak yaratma gibi konulara odaklanırken, bunların üzerinde uygun API ile çalıştırılan her bir uygulama, MR, Spark, Storm vb. kendi schduling ini yapmakta özgür kaldı. Bu şekilde örneğin, Twitter bütün sistemlerini kendi ihtiyaçları doğrultusunda geliştirdiği ve açık kaynak kodlu ürettiği Aurora Scheduler ile yönetmektedir.

Buluttan iş yapmak

Bilgi devrimi çağında otomasyon ile maliyetlerin düşürülmesi için güncel en önemli araç cluster ve kaynak yönetimi yapan yazılımlardır. Yapılacak işleri uygun kaynaklara atama problemi, kaynağın ne olduğu sorusu ile yakından ilişkilidir. Bunu kısaca tanımlayalım. Kaynak bir iş yapmak için kullandığımız her şeydir. Konumuz açısından baktığımızda iş yapmak bir yazılım parçasının, kodun çalıştırılması olduğu için bunun gerçekleştirilmesi için normalde olması gereken, bir makine yani donanımdır ve onun üzerindeki işletim sistemi ve gereken diğer uygulamalardır. Ama sanal makinalar devrinde bu iş, gerektiği zaman bir sanal makine açmak ve işi burada çalıştırıp kapatmak şekline dönüşmüştür. Dolayısı ile cluster yönetimi ve kaynak kullanımı bu işlerden de sorumludur. “Buluttan iş yapmak” deyimi bunu ifade etmektedir esasen. Kullanılan web servislerinin dahil olmak üzere bir çok servisin, bu şekilde gerektiği kadar node üzerinde çalıştırılarak kullanıldığını biliyoruz.

Minumum maliyet

Son birkaç yıldır, bu kurgunun yani her bir iş için bir sanal makine açmanın kaynak israfı olduğunu ve tasarruf noktası olduğunu düşünenler, iki çözüm üzerinde yoğunlaştılar. Bunların birincisi, sanal makinanın kırpılmış bir halini kullanmaktır. Kullanıcı ile güvenli bir bağlantı, örneğin SSH, üzerinden etkileşebileceği bir imkan verip kullanıcı ara yüzünü tamamen kaldırmak gibi. Bunun bir örneği Vagrant dır. İkinci bir çözüm, eski bir çözümü yeni bir problem için kullanmak fikrinden çıkmıştır. Uygulama geliştiricilerin yakından bildiği container ları kullanmak. Bu şekilde her bir iş için bir container kullanılarak kaynak kullanımı minimize edilmiş olmaktadır. Bu çözümün önde gelen ismi Docker dır. Yani bir işi sanal bir makine yaratarak değil de, uygun container ile çalıştırmak. Bunu uzun zamandır yaptığını açıklayan Google, 2014 de bir haftada 2 milyar container ı operasyonları için çalıştırdığını açıklamıştır. Şu andaki sıkıntı container dünyasının ortak bir standardı olmamasıdır ve bunun için Google firması desteği ile Linux Foundation tarafından Cloud Native Computing Foundation kurulmuştur. Standartların oluşması ile bulut üzerinde iş yapan firmaların iş yapma şeklinde köklü değişiklikler ortaya çıkacağı beklenebilir.

Akıl akıldan üstündür

Son olarak bu katmanın kazandırdığı diğer bir özellikten bahsederek bu yazıyı bitirelim. Normalde tek bir dağıtık uygulama çalıştırmaya izin veren cluster kullanımı yerine, birden fazla dağıtık uygulamanın bir cluster da çalışabilmesinin önü açılmıştır. Bunun şu anda öncü firmalarından Mesosphere ın servis olarak sattığı, Mesos üzerinde bu tür bir hizmettir.

Sonuç

Bu şekilde otomasyonun giderek daha fazla kullanılması, ürün ve hizmetlerin daha ucuza üretilmesini sağlarken, rekabette öne çıkmanın önemli araçlarından biri olmuştur. Ülkemizde scheduler ın bir ürün olarak ne işe yaradığını bilmeyen bir çok BT çalışanı olduğunu ve bir scheduler kullanmadan operasyonlarını yürüten firmalar olduğunu düşünürsek bu gelişmelerin neresinde olduğumuzu maalesef görmüş oluyoruz.

Yorumlar

Bu blogdaki popüler yayınlar

SAS Nedir?

Anthony Barr, James Goodnight, John Sall ve Jane Helwig isimli dört kişi tarafından 1976 yılında Statistical Analysis System i smi ile kurulan fakat yazılım alanında ürettiği ürünlerle bu sınırları aşan SAS (SAS Institute) günümüzde borsaya açık olmayan dünyanın en büyük yazılım şirketlerinin başında geliyor. Hiç kuşkusuz bu dörtlüden en önemlisi, Harvard Business School tarafından* 20 inci yüzyılın en önemli iş liderleri listesinde gösterilen ve aynı zamanda şirketin CEO su olan James "Jim" Goodnight dır. İstatistik alanında doktorası olan Goodnight ayrı bir yazı konusu olmayı hakeden renkli bir kişilik. SAS denince ilk akla gelen öncelikle istatistik ve iş zekası alanlarında marketin önemli oyuncularının başında gelen ve "Bilmenin gücü (Power to know)" nü uzun yıllardır müşterilerinin hizmetine sunan Amerika Kuzey Karolayna merkezli dev bir yazılım şirketi olduğudur. Detaylarda ise genetik, tarım, finans, telekom, uzay, ilaç, kimya, bankacılık gibi birçok farkl

Veri kalitesi işlemlerinde bulanık mantığın (Fuzzy logic) kullanılması

Bulanık mantık (Fuzzy Logic) üzerine 1995 yılında bitirdiğim yüksek lisans tezinde, bulanık mantık ile çalışan bir uzman sistem yapmıştım. O zamanlar bulanık mantık, bilişim teknolojileri alanında yeni yeni emekleme dönemindeydi. Özellikle veritabanlarında bilgi keşfi çalışmaları için kullanılması yönünde oldukça çok akademik çalışma yapılmaktaydı. Günümüzde Bilgi Teknolojileri (BT) sektöründe bulanık mantık dahil diğer bilgi belirsizliği modellerini, BT profesyonelleri "kullanıyor" dememiz zor. Fakat en zor alanlardan biri olan ve gün geçtikçe önemi artan veri kalitesinin arttırılması konusunda yapılan çalışmalarda, bulanık mantık terimi oldukça sık ismi geçen bir terim haline geldi. Bu nedenle yazımızın konusu bu terimin genel anlamından çok veri kalitesinde kullanımı konusunda olacak. Veri kalitesi çalışmalarında fuzzy logic kelimelerini ilk duyduğumda kelimelerin bulanık küme teorisinde kullanılması geldi. Örneğin; çok gürültülü kelimesinin bulanık kümesinin kurulmas

Veriden Bilgiye Dönüşüm Sürecinin Temelleri

Merhaba, Ağırlıklı olarak Telekom sektöründe uzun yıllardır çalışmakta olan birisi olarak, büyük şirketlerdeki verinin ilk çıkış noktalarından, raporlarda yer alması ve karar destek sistemlerinde görünmesine kadar giden süreçler hakkında önemli bir bilgi birikimim oldu. Bu bilgi birikimi farklı noktalardan bakışı gerektirir ve az sayıda profesyonel, bu bakışa sahip olma ayrıcalığını taşır. Sürekli değişen Bilgi Teknolojileri (BT)  araçları ve yüksek rekabet ortamı içinde bu bilgi ve tecrübeyi sürekli güncel tutmakta ayrı bir gayret gerektirir. Tabii ki bu tecrübede kullanılan araçların yeri yadsınamaz. Atalarımız alet işler el övünür derken haklı bir noktaya temas etmişler. Fakat bu bizde, aletin işin en önemli parçası olduğu şeklinde bir yanılsama yaratmasın. Peki, işin en önemli kısmı nedir öyleyse? Bu soruya yanıt vermeden önce sürece biraz yakından bakmakta fayda var. Gerçekte birbirine benzeyen büyük şirket yada kurumlarda (yazının devamında ikisi içinde büyük org