MongoDB, Hadoop, NoSql ve İlişkisel Veritabanlarının Hybrid Kullanımı

by Şubat 12th, 2012 No Comments »

Son zamanların en moda hareketlerinden biri uygulamaların veri saklama kısmında NoSql kullanmak oldu. Yazılım dünyasının “sıcak konuları” vardır. Eğer popüler olmak istiyorsanız bu tür moda hareketleri yapmak zorunda hissedersiniz kendinizi. Scala/Lift kullanmak, JEE’yi karalamak, web arayüzlerini en son js frameworkleri ile gerçekleştirmek, ihtiyacı olmayan uygulamaları bile bulut bilişim üzerinde çalıştırmak şeklinde örnekler çoğaltılabilir. İşte bu örneklerden biri de veritabanı olarak ilişkisel veritabanlarını kötüleyip, NoSql olarak adlandırılan veri saklama yöntemlerine yönelmektir.

İlişkisel veritabanlarını kötülemeden önce, bu veritabanlarının gerçek hayatta nasıl kullanıldığına bir bakmak gerekmektedir. Bu veritabanlarının görevi, adı üzerinde, ilişkisel veriyi tutmak içindir. Peki yazılımlara bir bakarsanız bu veritabanlarında başka hangi veriler bulunmakta?

  • uygulama oturum bilgisi (session)
  • süreç durum bilgisi (workflow status)
  • işletme kurallarının bir kısmı (business rules)
  • kullanıcılar ya da uygulama instance’ları arası iletişim için

Siz elinizdeki çekiç ile vida kullanmaya kalkarsanız, ne vidaya ne de çekice suç atmaya hakkınız yoktur.  Öncelikli sıkıntılardan biri yazılım mimarisinin yanlış tasarlanmasıdır.  Bir veriyi tutmak için elimizde pek çok seçenek var

  • cache ya da data grid
  • süreç motorları (workflow engine)
  • kural motorları (rules engine)
  • mesaj kuyrukları (messaging queue)
  • farklı NoSql çözümleri
  • ilişkisel veritabanları
  • dosya sistemleri (file systems)

Bu seçeneklerin bazıları arka tarafta gene ilişkisel veritabanı kullanabilirler, ama bu sizin asıl probleminiz olmamalıdır.  Asıl problem, uygulamanızın çözüm sunduğu problem için en uygun mimariyi kullanmaktır.  Bu sebeple elinizdeki mysql’i kaldırıp yerine mongodb koyup, sonra da performansın yerlerde nasıl süründüğünü izlemek çok da olağan dışı, rastlamadığımız bir olay değildir.

Öncelikli olarak elinizdeki araçlar hakkında bilgi sahip olmak gerekmektedir.  Eğer dedikleri gibi siz bir balığı ağaca tırmanma yeteneğine göre değerlendiriyorsanız, başarısız olması kaçınılmazdır.  Hiç bir moda uygulama tek başına her probleme çözüm değildir.   Her aracın güçlü ve zayıf yönleri mutlaka vardır.  MongoDB’mi iyi, Neo4j mi? Cassandra mı yoksa Oracle mı?  Bu soruların aslında cevabı ne aradığınız ile ilgili ve belki de çözümünüz birden fazla araç kullanmanızı gerektirmektedir.

Nasıl mı? Basit bir karma örnek ile açıklayalım

  • Redis: Hızlı okuma ve yazma ihtiyacınız var ancak veri kaybı çok da önemli değil, kullanıcı oturum bilgisini tutacaksınız örnek olarak
  • MongoDB: Çok fazla okuma var ancak yazım kısmı az, ürün kataloğu ya da blog yazıları gibi
  • Cassandra: Pek çok farklı noktada yüksek hacimli yazma işleminiz var, kullanıcı aktivite kayıtları gibi veya rfid takibi
  • Neo4j: Nesneler (ya da node’lar) arası ilişkinin çok fazla olduğu durumlar varsa, sosyal medya uygulamaları gibi takip etme, beğenme gibi işlemler yapıyorsanız
  • İlişkisel veritabanı: Bir raporlama aracı/framework’u kullanıyorsanız ya da muhasebe/finansal veri gibi ilişkisel veri saklama ihtiyacınız varsa
  • Hadoop: Elinizde belli bir zaman kısıtı içerisinde işlenmesi gereken çok büyük (gerçekten çok büyük) veriniz var ve bu işleme işini dağıtacak çok sayıda makinanız var ise kullanabilirsiniz

Esas nokta, yukarıda ismi geçen uygulamaları tek bir yazılımın arkasında kullanabilirsiniz.  Yani yazılımınız, yukarıdaki sistemleri en güçlü olduğu alanlarda kullanan bir orkestra şefi gibi çalışıp; veriyi olması gerektiği yerde olması gerektiği şekilde kullanmalıdır.  Örnek olarak; Cassandra ile yapılacak bir işi, Neo4j ile yapmaya çalışmak, MongoDB kullandığınız sistemde arada memcache kullanmak gibi seçimlerde performans sorunlarına sebep olacağı için, ve dolayısıyla suçlu asla siz olamayacağınız için, kullandığınız araçların ne kadar başarısız oldukları sonucuna sizi götürecektir.

NoSql çözümleri gerçekten başarılı sonuçlar veren, çok güzel uygulamalar ancak bu ilişkisel veritabanlarını da tamamen beceriksiz yapmaz.

Munin Hakkında Kısa Bilgi

by Şubat 12th, 2012 No Comments »

Aşağıdaki yazı eski stajerlerimizden Ramazan İlhan Akkan tarafından yazılmıştır.

Munin bir sistem izleme aracıdır. Adını İskandinav mitolojisindeki tanrı Odin’in kuzgunlarının birisinden alır. Bu kuzgunlar bütün Midgrad’ın üstünden uçar ve gördüklerini geri dönüp Odin’e anlatırlarmş. Bu araçta aslında aynı görevi yerine getiriyor. Performansını izlemek istediğimiz sistemlerden gereken bilgileri belirli aralıklarla alıp ana servera getiriyor. Daha sonra da onları bize web arayüzü aracılığı ile grafiksel olarak sunuyor.

Program 2 paketten oluşuyor; Munin ve Munin-node. Munin paketini bilgilerin toplanacağı servera, Munin-node’u ise izlenilecek sistemler üzerine kuruyoruz. Muninin bize sunduğu pluginler sayesinde sistem hakkında bilgileri alabiliyoruz. Tabi ki hangi pluginleri çalıştıracağımıza biz karar veriyoruz. Muninin geniş bir plugin deposu olmasına rağmen eğer aradığımız bir plugini bulamazsak munin bize gereken plugini kendimizin yazmasına olanak veriyor. Programın en güçlü yanlarından birisi de bu özelliği. Performansını izlemek istediğiniz bir CPU, RAM veritabanı ve hatta uygulama bile olabilir. Tek yapmamız gereken ihtiyanımız olan veriyi bize getirecek olan plugini bulmak veya yoksa yazmak.

Plugin yazabilmek için biraz Perl veya Bash script dilleri hakkında bilginiz olması gerekiyor. Bu güçlü araç Perl dili kullanılarak yazılmış ve içinde RRDtool’u bulunduruyor. Buda topladığı verileri grafiksel olarak bize sunmasını sağlıyor. Bize sadece bu grafikleri takip etmek kalıyor. Ama eğer işimiz sadece bu değilse bütün gün oturup bu grafikleri izleyemeyeceğimiz açık. Munin bu sorunu da hallediyor. Tek yapmamız gereken bizim için önemli olan değerleri munine söyleyip bu değerler aşıldığında veya altına düşüldüğünde bize mail ile haber vermesini istemek.

Muninin bize sağladığı özelliklerden bir başkası ise birden fazla grafiği tek bir grafikte toplayabilmesi. Mesela 3 ayrı sistem üzerinde bir uygulamanın çalışmasını izlemek istiyorsanız bunları ayrı ayrı grafiklerden takip etmeniz size vakit kaybettirir. Bu yüzden bunları tek bir grafikte toplayıp incelemek durumu daha iyi gözlemleyebilmenize ve vakit kazanmanıza olanak sağlar.

Munin kullanımı ve ayarlanması son derece basit bir araçtır. Linux, FreeBSD, NetBSD, Solaris, AIX ve Windows platformları üzerinde çalıştırılabilir.. Size sunduğu web arayüzünü ve oluşturduğu grafikleri görmek için Munin’in resmi sitesinden aldığım şu linkteki çalışan bir örneğine bakabilirsiniz; http://munin.ping.uio.no/

özgür uygulamaların kalitesi ve verimliliği

by Aralık 5th, 2011 No Comments »

SPP42 de biz, alt yapımızı tamamen özgür uygulamalar üzerine kurmuş durumdayız. Neler kullandığımız ile ilgili yazılarımıza buradan ve buradan ulaşabilirsiniz. Ancak daha önce hiç özgür yazılım tecrübesi olmayan firmalarla karşılaştığımız zaman (ki bunların bir kısmı arkadaşlarımızın firması), bizi gülümseten ilginç diyaloglar geçmekte.

Bir yazılım firmasının herhangi bir versiyonlama sistemini kullanmaması kabul edilebilir bir yaklaşım değildir. Yazdığınız kod, geçmişi ile, güncellemeleri ile, tarihçesi ile o firmanın kültürünü ve tarihini belirler. Versiyonlama sistemlerinin belki de en gelişmeleri özgür uygulamardır. Git, bazaar, svn gibi pek çok farklı yazılım geliştirme kültürüne uygun, özgür versiyonlama sistemleri varken, bunları kullanmamak için makul bir sebep bulmak çok zordur.

Versiyonlama sistemi kullanmamak kadar kabul edilemez bir yaklaşım da bir proje yönetimi uygulaması kullanmamaktır. Biz, SPP42 olarak ilk başlarda python ile geliştirilmiş Trac kullanmaktaydık, ancak yapımız değiştikçe Redmine bize daha uygun gelmeye başladı. Şu an neredeyse bütün kod birikimimiz ve proje bilgilerimiz, dosyalarımız, hata bilgilerimiz Redmine üzerinde bulunmakta. Bizim için günlük iş rutinimizin vazgeçilmez bir parçası durumunda. Bizim gibi özgür uygulamarı inceleyen, deneyen, desteğini veren firmalara baktığınız zaman, kullandıkları alt yapıların özgür olmayan sistemler kullananlara göre çok daha nitelikli ve kaliteli olduğunu rahatlıkla görebilirsiniz.

Peki bu farkın nedeni nedir? Öncelikli olarak kapalı ortam geliştiricileri, bu kapalı ortamın dışına bakmatan çekiniyorlar. Ellerindeki ürün ne kadar özellik sunuyorsa o kadar alınabileceğini düşünüyorlar. Ama daha da kötüsü, özgür uygulamarın daha kalitesiz ve yetersiz olacağı yönünde bir ön yargıları bulunmakta. Daha önceki bir yazımda belirttiğim gibi, özgür uygulamalar aslında bedava uygulamar olmadığı gibi tıpkı özgür olmayan uygulamalarda olduğu gibi, çok kaliteli olanları da var, çok kalitesiz olanları da. Kalite algısı biraz daha göreceli olmakla beraber, bu yaklaşımda olan firmaların “kötü” diye nitelendirdikleri özgür uygulamarın alternatifi olarak kullandıkları “kaliteli(!)” kapalı bir uygulamada bulunmamakta çoğu zaman. Örneğin “neden projelerinizi redmine gibi bir uygulamada yönet miyorsunuz?” sorusuna “açık kaynak ürünleri güvenilir bulmuyoruz” cevabını veren bir firma, aslında proje yönetimi için hiç bir uygulama kullanmamakta. Zira problem teknolojik uyumsuzluktan öte, standartlaşma, dökümante etme, işleri süreçler üzerinden kontrol etme kültürünün olmamasında kaynaklanmakta. Yoksa Türkiye’deki çoğu firma gibi “crack” uygulamalar ile işlerini rahatlıkla görebilirler.

Bizim alt yapı olarak kullandığımız sistemleri SNR+ markası altında yazılım firmalarına özel bir paket olarak da sunmaktayız. Sadece bu paketin içeriğine bakarak bile özgür uygulamarla neler yapılabileceğini rahatlıkla görebilirsiniz. Bu ürünleri nasıl kullandığımızdan da daha önce bahsetmiştim.

Peki gerçekten özgür uygulamalar kalitesiz ve/veya verimsiz mi? Bu sorunun cevabı için belki de belli başlı büyük özgür yazılım örneklerine bakmak gerekmektedir. Sonuçta sunucu pazarında bir dev olan Linux’un ana çekirdeği olan Kernel, dünyada en çok kullanılan web sunucusunun ve de pek çok özgür yazılımın evi olan Apache ve daha bir çok özgür yazılım devinin alt yapılarını incelerseniz, onların da bu özgür yazılımları geliştirmek için alt yapılarında pek çok farklı özgür yazılımı kullandıklarını görebilirsiniz. Peki Linux kerneli gibi bu kadar hem coğrafik olarak hem yönetimsel olarak dağınık yapıda geliştirilen projeler nasıl başarılı olabiliyor, bir düşünmek lazım.

Jabber ve Redmine: Şirket içi sessiz iletişim

by Aralık 2nd, 2011 No Comments »

Geçenlerde Özgür Yazılım A.Ş.‘den Hakan Uygun ile bir sohbetimiz sırasında, jabber’ın ne kadar hayatımızı kolaylaştırdığından bahsettik. Özgür Yazılım hem İstanbul hem Ankara ofisleri olan bir firma. Bizde ise ofis dışında bulunan personel bulunmakta.

Aslında coğrafik olarak dağınık olmasanız bile, yanınızda çalışan arkadaşınıza bir soru sormak, ya da birine telefon etmek, karşı taraftakinin iş konsantrasyonunu bozmakta. Hele bizim gibi belli bir süre konsantre olmanız gereken işlerde daha da bir sinir bozucu olabilir. Ya da iletmek istediğiniz mesaj bir eposta için çok kısa olabilir; paylaşmak istediğiniz bir link mesela.

Bizim ofis içerisinde bu tür iletişimler için kullandığımız özgür uygulamarı SNR+ altında bir yazılım geliştirme paketi olarak ürünleştirdik. Özgür uygulamar alanında en iyi çözümleri sunmaktalar aslında.

Jabber sunucusu olarak OpenFire kullanmaktayız. Hem yönetmesi kolay hem de PostgreSql desteği bulunmakta. Jabber’in özelliği standart XMMP kullanmasıdır. Yani eger gTalk ya da Facebook Chat kullanıyorsanız zaten sizde bir Jabber müşterisisiniz diyebiliriz. MSN Live ya da Yahoo Chat gibi anlık mesajlaşma sistemlerinin kontrolünün sizde olmamasıdır. Ancak Jabber sunucusu kurduğunuz anda, kendi alan adınız altında tamamen sizin tarafınızdan yönetilebilir bir anlık mesajlaşma sunucunuz olacaktır. Peki ama kurum dışı kişiler ile mesajlaşılamıyor mu? Tabi ki mesajlaşabilirsiniz. Jabber sunucuları birbirleriyle konuşabilirler, tabi ki sizin kontrolünüz ve izninizle. Yani SPP42 Jabber sunucusunda bulunan bir kişi, bir gTalk kullanıcısını ekleyebilir ve mesajlaşabilir, ya da başka bir özel jabber sunucusu ile. Örnek olarak biz Özgür Yazılım A.Ş.’nin jabber sunucusunda olan kişilerle ve Pardus Jabber sunucusunda olan kişilerle anlık mesajlaşma gerçekleştirebilmekte ve dosya iletebilmekteyiz. Ancak en önemlisi tüm bunları kendimiz yönetebilmekteyiz. Yani mesajlaşma SSL ile güvenlikli mi olacak, hangi harici jabber sunucuları ile mesajlaşılabicek, bunu yönetebilmekteyiz.

İkinci ve belki de en önemli iletişim aracımız tabi ki Redmine sunucumuz. Daha önceki bir yazıda da kendisini kullandığımızdan bahsetmiştim. Redmin bütün projelerimizin yönetildiği ve projeler ile ilgli hata bildirimlerinin, wiki sayfalarının, döküman ve belgelerin bulunduğu bizim için oldukça önemli bir yer. Gene arka planda PostgreSql sunucusunu kullanmakta veritabanı için. Aynı zaman da subversion’da bulunan kodları da izleyebilmekteyiz. Bunlara ek olarak müşterilerimiz de hata bildirimlerini ve proje ile ilgili bilgileri Redmine üzerinden alabilmekte. Eğer yapılacak bir iş, bir hata ya da herkesin proje ile ilgili bilmesi gereken bir bilgi varsa, mutlaka Redmine üzerinde bulunmalıdır.

Sonuçta söz uçar yazı kalır :)

Hadoop… Bulut Bilişim… ama nasıl?

by Kasım 30th, 2011 1 Comment »

Hadoop, map/reduce, bulut bilişim (cloud computing), nosql son zamanların oldukça sıcak ve havalı konularından. Her taraftan farklı bir fikir, farklı bir ses gelmekte ve bu yeni fikirlerin/ürünlerin ne kadar başarılı olduğundan bahsetmekte. Şurası bir gerçek ki, bilişim dünyası ciddi bir değişim içerisinde. Çevirim dışı bir yaklaşımdan, çevirim içi dünyaya doğru ciddi bir akış var. Şimdi internete bağlı olmayan bir bilgisayar düşünülemediği gibi, artık cep telefonlarımızdan bile devamlı internete bağlı olmasını istemekteyiz. Facebook, twitter, foursquare bizimle beraber gittiğimiz her yere de gelmek zorunda artık.

Bu tür çok kullanıcılı uygulamalar arttıkça, coğrafi olarak dağınık bölgelerden bağlı istemci sayısı arttıkça geleneksel yazılım geliştirme yaklaşımları yetersiz kalmaya başladı. Google’ın elindeki indeksleri bildiğimiz rdbms (ilişkisel veritabanı yönetim sistemi) ile tutmaya kalkması pek mümkün değil, eğer bir aramanın bir kaç saat sürmesine katlanmak istemiyorsak tabi ki. Öyle olunca alt yapı için cloud computing, üzerinde big data (büyük veri) adı verilen verilerle baş etmek için geliştirilen Apache Hadoop gibi farklı sistemler oluşmaya başlıyor.

SPP42, hem Hadoop hem de OpenStack uygulaması ile SNR+ markası altında bulut bilişim desteği vermekte. Ancak bu konularda karşılaştığımız sıkıntılar kesinlikle teknik sıkıtınlar olmaktan çok uzakta. Öncelikle iki kavram da tam olarak anlaşılabilmiş değil. Bu anlaşılmazlığın arkasında aslında bilişim devleri de bulunmakta. Örneğin bir sanallaştırma çözümü bulut bilişim olarak anlatılmakta. Evet sanallaştırma bulut bilişimin bir parçası olabilir ama tamamı kesinlikle değil. Pek çok bulut bilişim hizmeti verdiğini belirten ISP/Datacenter firmalarının sayfalarını bir inceleyin. Ne kadar yanlış bilgiler verdiklerini göreceksiniz.

Hadoop için de konu aslında pek de farklı değil. Zira problem Hadoop problemi değil öncelikle. Problem “Big Data (büyük veri)” kültürünün olmaması. Bu konuyu Hadoop konusunda oldukça deneyimi bir programcı arkadaşımla da tartışmaktaydık haftasonu. Hadoop piyasada olan çözümlerden bir tanesi. Bu Hadoop furyası biraz da “En iyi dil hangisi?” sorusuna benziyor. En iyi programlama dili, probleminize en doğru çözümü sağlayabilecek dildir. Bir problem için bu php olur, başkası için Java, daha başkası için python. 2009 tarihli bir blog girdisinde de belirttiğim gibi “Eğer elinizdeki tek alet çekiç ise her şey çivi gibi görünmeye başlar” diye çok beğendiğim bir söz var. Aynı şekilde “Hadoop çok hızlı, bununla her işi yaparız” derseniz, bir süre sonra daha önce kurduğunuz MySql çözümünün daha hızlı çalıştığını görünce şaşırmamanız lazım. Bir müşterimiz için Türkiye saatlik elektrik verilerini işleyen bir yazilim prototipi üzerinde çalışırken Delphi/Ms SqlServer çözümünün 27 saniyede hazırladığı raporu, Python/MongoDB ile 3 saniyenin altına indirmeyi başarmıştık, ancak bu bütün uygulamalar Python/MongoDB ile yazılırsa çok hızlanır anlamına asla gelmez.

Peki Hadoop, bulut bilişim, nosql nasıl kullanılmalı? Bu sorunun cevabı aslında çok da teknik değil. Kurum içerisinde büyük veri işleme, o veriye doğru soruları sorup doğru bilgileri isteyecek, talep edecek birileri olmadıkça, bu teknolojiler gösterişli çözümler olmaktan öteye gidemezler. Birileri etrafta akan verinin farkına varıp, bu verileri saklamak ve doğru soruları sorup bu verileri bilgiye çevirmek istemedikçe bu yeni akımlar etkisiz kalacaklardır. Bulut bilişim ve big data yeni bir paradigmanın çözüm araçları. Biz kendi yaklaşımımızı, paradigmamızı değiştirmedikçe de etkili araçlar olamayacaklar.

NoSql çözümleri ile ilgili daha detaylı bir yazıyı da sonraya bırakmak lazım.

özgür yazılımlara kurumsal destek

by Kasım 27th, 2011 No Comments »

Daha önce SPP42′de yenilikler olarak duyurduğumuz, yeniliklerden biri sonunda bugün hayata geçti. Öncelikle kendimizin kullandığı özgür yazılımlara SNR+ markası altında kurumsal destek vermeye başladık. Hali hazırda bu uygulamalar için destek verdiğimiz müşterilerimiz bulunmakta. Ancak fark ettik ki, bizi bilen ve tanıyan kurumlar bu tür yeteneklerimizin farkında. Diğer özgür yazılım ile uğraşan firmalar gibi, aslında biz de kendimizi yeterince kurumsal alanda tanıtamadığımızı fark ettik ve bu sebeple böyle bir marka altında bu ürünlere destek vermeye başladık.

Pazarlama da “kendi köpek mamanı yemek” diye bir deyim vardır. Özetle sattığınız ürünlerin ilk müşterisinin kendiniz olması gerektiği ile ilgili hikayelerin etrafında oluşmuş bir deyimdir. Aslında biz de bu felsefe ile SNR+ altında sunduğumuz bütün özgür uygulamaların müşterisiyiz aynı zamanda. Desteğini verdiğimiz her bir özgür yazılımın performansından oldukça memnunuz ve daha da ötesi, kullanmaktan keyif de almaktayız.

SNR+ içerisinde sunduğumuz çözümler ile ilgili daha detaylı yazılar da ekleyeceğiz ancak en çok ilgi çekecek olanın OpenStack üzerinde KVM ile sanallaştırılmış makinalardaki Hadoop çözümümüz olacağını düşünmekteyim…

28. Ulusal Bilişim Kurultayındayız

by Ekim 27th, 2011 No Comments »

Türkiye Bilişim Derneği‘nin düzenlediği 28. Ulusal Bilişim Kurultayı‘nda konuşmacı olarak bulunacağım.  28 Ekim 2011 Cuma günü saat 16:00 da “Hacktivist Akımın Sonu Ne Olacak? Anlamak mı? Korunmak mı?” başlıklı oturumda çok keyifli bir ekip ile beraber İsmail Hakkı Polat yönetiminde güzel sohbet olacağını umuyorum.  Beraber hacker kimlere denir, manifestoları nedir ve hackler hakkında bilinen yanlışları konuşacağız.

Kurultayın programına buradan erişilebilir.  İlgilenen herkesi bekleriz.

SPP42′de yenilikler

by Ekim 24th, 2011 No Comments »

Bu hafta içerisinde yeni sosyal sorumluluk projelerimizden birini daha hayata geçireceğiz, son dokunuşları yapmaktayız.  Çok keyifli bir ekip bu projenin arkasında, çıkan sonucun da öyle olacağına inanıyorum.  Bir de ilave olarak kendimizin de kullandığı, danışmanlığını verdiğimiz ya da destek verdiğimiz pek çok açık kaynak ürün için yeni bir uygulama ile karşınıza çıkacağız.  Alanlarında kendini ispatlamış özgür uygulamaları hemen kurulabilir sanal makina imajları olarak da müşterilerimize vermeyi düşünmekteyiz.  Bu sebeple yazılarımızdan biraz geri kalıyoruz, özür dileriz :)

SPP42′de Yazılım Geliştirme Sürecinde Özgür Uygulamalar – 2

by Ekim 3rd, 2011 No Comments »

Daha önceki yazımızda kullandığımız Özgür Yazılımların bir kısmından bahsetmiştik.  Bu yazıda da sunucu tarafında kullandığımız teknolojilere biraz değinelim.

Sunucularımızda kullandığımız işletim sistemi Ubuntu 10.04 LTS.  3 adet fiziksel sunucu üzerinde toplam 15 sanal makina, SPP42′nin kendi ihtiyaçlarını karşılamak için çalışmakta.  Sanallaştırma için kullandığımız teknoloji KVM.  Eğer biraz elinizi kirletmekten korkmayıp komut satırı kullanmak sizi rahatsız etmiyor ise VMware kullanmanızı gerektirecek bir eksikliği yok.  İlk başlarda bir sunucuda KVM, diğer sunucuda VMware kullanmaktaydık.  Ancak bir süre sonra VMware’i taşımak daha zor olmaya başladı.  En büyük problem VMware istemcisinin Windows işletim sistemi üzerinde çalışmak istemesi oldu.  Daha sonra uygulamak ya da denemek istediğiniz ufak işler için bile bir sürü lisans ayarı yapmanız ya da ücretsiz de olsa lisans istememiz gerekti.  Bu sebeple VMware’i tamamen sistemden kaldırıp, tüm sunucularda KVM’e geçme kararı aldık.  KVM oldukça kararlı ve sorunsuz bir şekilde çalışmakta.  Ayrıca komut satırına gitmeden Virtual Machine Manager uygulaması ile pek çok işlemi oldukça rahatlıkla yapabiliyoruz.

Yeni almayı panladığımız sunucular ile birlikte alt yapımızı OpenStack üzerine kurmayı planlamaktayız.  2012′den önce KVM’i OpenStack üzerinde kullanılır hale getirip, kendi içimizde özel Bulut Bilişim platformumuzu kullanmayı düşünüyoruz.  Bulut Bilişim’e geçme sebebimiz ise, gerek demolar için gerekse kendi kullanımımızda kurduğumuz makinaların ölçeklenebilmesi ve kümelendirilebilmesi işlemini çok daha rahat gerçekleştirebilmek.

İç kullanım için kullandığımız özgür yazılımlardan bazıları:

  • Clustered PostgreSql
  • Clustered MySql
  • MongoDB Shards ve ReplicaSet
  • JBoss AS ve Tomcat
  • Apache ve Nginx web sunucuları (bir kısmı reverse proxy olarak kullanılmakta)
  • HAproxy Load Balancer
  • Bacula Yedekleme Sunucusu
  • Zenoss Monitoring Sunucusu
  • Memcache Sunucuları
  • Subversion ve Git sunucusu

Kullandığımız yazılımları mümkün olduğunca PostgreSql destekli kullanmaya özen gösteriyoruz, ancak bazı yazılımlar (ör: OpenX) MySql ile daha iyi çalıştığı için bir de MySql kümesi de barındırmaktayız.  MongoDB ise kendi geliştirdiğimiz yazılımlarda çalışmakta.  Web Sunucularında ise Rails, Django, PHP tabanlı pek çok uygulama çalışmakta.

Özgür Yazılım demek Bedava Yazılım demek değildir

by Eylül 25th, 2011 No Comments »

SPP42 olarak tüm alt yapımızı özgür yazılımlar üzerine inşa etmiş durumdayız. Sunucularımızdaki işletim sistemlerinden sanallaştırma çözümümüze, proje yönetim uygulamamızdan yazılım geliştirme araçlarımıza kadar hep özgür yazılımı tercih etmekteyiz. Ancak özgür yazılım tercihi yapan pek çok firmada ciddi bir yanlış algılama var. “Özgür Yazılım” demek “Bedava Yazılım” demek değildir. “Free as in freedom, not as in free beer” orjinal deyimiyle.

Peki SPP42 neden özgür yazılım kullanıyor?

1) Özgür Yazılım çoğu zaman daha güvenlidir/kalitelidir.
Düşünün ki, yaptığınız işi tüm dünya ile paylaşıyorsunuz ve pek çok meraklı göz yaptığınız işe bakıyor, kontrol ediyor, tenkit ediyor ve kullanıyor. Kapalı sistemlerde ise, bu kontroller için firmaların belirlediği sınırlı test ekibine güvenmek zorundasınız. Çoğu firma böyle bir test ekibi bile bulundurmayıp kullanıcı hata bildirdikçe düzeltme yolunu seçmekte, tabi kullanıcı hata belirtme zahmetine katlanırsa. Yazılıma pek çok kişi dahil edildiği için, bu katılımcılar sadece kullanıp, hata bulmakla kalmıyorlar, aynı zamanda çözüm de öneriyorlar çoğu zaman. En kısa tabirle “bir elin nesi var, iki elin sesi var”

2) Özgür Yazılım çoğu zaman işe daha uygun çözümleri sunuyor
Çoğu özgür yazılımın başlangıç noktası, bu projeyi başlatan ekibin kendi problemlerini çözmek için işe başlaması oluyor. Yani gerçek hayat problemlerine, gerçek ihtiyaçlara gerçekçi çözümler sunulmakta çoğu zaman. Ticari bir kaygı ile, başkalarının problemlerine uzaktan çözüm bulmak yerine, kendi yarasına merhem olan çözümler çok daha etkili olmaktadır.

Peki Özgür Yazılım bedava mıdır?
Kesinlikle hayır. Evet, özgür yazılımları bir yerden para ödeyerek almak zorunda değilsinizdir çoğu zaman ancak bu bedava oldukları anlamına gelmemektedir. Eğer bu tür özgür yazılımlar ile tecrübeniz var ise ve kendi iç kaynaklarınız ile kurulum ve devamlılık işlemlerini yerine getirebiliyorsanız, size maliyeti harcadığınız zaman kadar olacaktır. Eğer bu tür özgür yazılımlar için dışarıdan destek alıyorsanız, bu sefer de yazılımın toplam sahip olma maliyeti aldığınız destek ile orantılı olacaktır.

Peki özgür yazılım desteği aldığınız yerler neden bu iş için para isterler? Eğer çalıştığınız firma profesyonel bir firma değilse, ya da satın almayı yapan kişiler bilgili değillerse, bu soru ile çok karşılaşırsınız. Aslında burada SPP42 olarak bizim de talep ettiğimiz ücret, bedava olan bir ürün için talep ettiğimiz bir ücret değildir. Talep ettiğiniz özgür yazılımı en düzgün şekilde kurup, çalıştırılabilmesi ve devamlılığının sağlanabilmesi için verdiğimiz danışmanlık ve destek hizmetlerinin bedelidir.