Cloud Hakkında
Akıllı telefonlar, Web 2.0 ve sosyal ağ kültürü bir çok mobil ve web projesini hayatımıza soktu. Bu projelerin büyük kısmı hayatta kalamazken bazıları müthiş gelişim gösterdiler.
Gelişim gösterebilen projelerden birine sahip olabilmek heyecanı, yeni girişimcilerin sürekli yeni projelerle karşımıza çıkmasına neden oluyor. Bu kadar projeyle karşı karşıya gelince insanın aklına şu soru takılıyor: tutmama ve yaygınlaşmama gibi çok yüksek oranlı risklerin olmasına rağmen bu yatırımlar nasıl yapılabiliyor?
Elbette her proje yarın milyonlarca kullanıcısı olacakmış gibi yatırımlarla ortaya çıkmıyor, burada anahtar kelime ölçeklenebilirlik. Eğer ölçeklenebilir bir donanım ve yazılım mimarına sahipseniz küçük bir yatırımla sistemi çalıştırır ve gerektiğinde büyüterek devam edersiniz. Eğer projeniz büyümüyorsa sadece küçük bir yatırımı kaybetmiş olursunuz. Bu durumda, projenizle ortaya koyduğunuz fikir, sunduğunuz özellikler, karşıladığınız ihtiyaçlar kadar sistemi nasıl tasarladığınız da çok kritik bir öneme sahip oluyor.
Ne zaman ve ne kadar hızlı büyüyebileceğini kestirmesi zor, alt yapı yatırımını sadece gerektiğinde yapabilmek için tasarladığımız projelerde ya da anlık yüksek kaynak gerektiren işlerde ilk akla gelen artık cloud hizmetlerinden faydalanmak oluyor. Cloud çözümleri ile en mantıklı(verimli) yatırımları yapabiliyorsunuz, kaynakların kullandığınız kadarını ödüyorsunuz.
Cloud hizmetleri uzun süredir hayatımızda büyük rol oynuyor. Takip edenler bilir, hem hizmet alan hem de hizmet veren olarak son zamanlarda büyük gelişim içinde olduğunu gözlemliyoruz.
Hizmet alanlar makina, network, storage yatırımı yapmadan projelerini çalıştırabiliyor ve kullandıkları kadar ödüyorlar.
Hizmet verenler ise ellerinde büyük fiziksel makina parkını, küçük parçalara bölüp operasyonel işleri otomatikleştirerek en verimli şekilde kullanmanın yolunu bulmuş durumdalar.
Bu modelde özetle “kazan kazan” anlayışı hakim. Bu anlayışın olduğu her yerde başarı neredeyse kaçınılmaz oluyor.
Geocities ile başlayan ve 12-13 yıldır süregelen kişisel web sitelerim için sadık bir hosting müşterisiyim. Bu süre içerisinde yerli yabancı bir çok hosting firmasından amatör olarak hizmet aldım. Shared serverlardan aldığım dandik(ucuz) hizmetlerden tutun colocation ve vps’lere kadar geniş bir yelpazede deneyimlerim oldu.
Benim cloud ile tanışmam ise bir hobi projesinin sunucu tarafını host edeceğim bir yer ararken, Google’ın AppEngine hizmetine java desteği sağlamasıyla oldu. Google AppEngine bir cloud hizmeti ve belli limitler altında tamamen ücretsiz. Android için geliştirdiğim aScore programının sunucu tarafı 2 senedir Google’a emanet ve bugüne kadar tık demedi
Google, AppEngine hizmeti ile geliştiricilere bir platform sunuyor. Geliştiriciler bu platforma uygulamalarını koyuyorlar ve cloud’ta host edilmesini sağlıyor. Network, disk, cpu, memory gibi altyapı birimleri developerlardan tamamen izole edilmiş durumda. Bu tip cloud hizmetlerine Platform as a service (PaaS) adı verilmiş.
Bir çoğumuzun günlük hayatta sıkça kullandığı cloud hizmetleri de var. Mesela gmail,flickr,dropbox vb. Bu tip verisi internette olan web uygulaması tipindeki hizmetlere de Software as a service (SaaS) adı verilmiş.
Amazon’un da cloud hizmetleri var, bu hizmetler yukarıda bahsettiğim PaaS ve SaaS’tan biraz daha farklı, çünkü bu hizmetlerle size, storage, network altyapısı ve makina sağlanabiliyor. Tüm bu alt yapıyı kendiniz konfigüre ediyor ve kullanıyorsunuz. Amazon’un verdiği bu alt yapı sunma hizmetlerine de Infrastructure as a service (IaaS) adı verilmiş.
Cloud ile ilgili bir çok bilgi ve kavramı wikipedia’da da bulabilirsiniz. Ben bu bölümde biraz Amazon cloud hizmeti deneyimlerimden bahsetmek istiyorum.
Amazon verdiği cloud hizmetlerini Amazon Web Services (AWS) adı altında bir araya toplamış. Bunlardan üzerinde en çok uğraştığım Elastic Compute Cloud (EC2) hizmeti oldu. Bu hizmet ile XEN sanallaştırma ortamı kullanılarak müşterilere değişik konfigürasyonlarda sanal makinalar veriyorlar. Verdikleri makinalarda hazır bir Linux dağıtımı veya Windows işletim sistemi olabiliyor. Burada tercih bize kalıyor.
Amazon’un sunduğu cloud hizmetlerinden, web üzerinde bir yönetim konsoluyla (AWS Management Console) ihtiyaç duyduğunuz bir çok işlem yapılabiliyor. Ayrıca hazırladıkları web service’leri kullanarak her türlü işlem gerçekleştirilebiliyor. WEB servislerini kullanarak bazı işlemleri otomatize etmek ya da farklı yönetim uygulamaları da yapmamız mümkün, mesela iPhone için yapılan iAWS ve bir Firefox plugini olan ElasticFox oldukça başarılı örnekler. Cloudfoundry ise Amazon’un IaaS hizmetini Google AppEngine’e benzer bir Paas’a çevirebiliyor, tabiki arka tarafta Amazon Web Servislerini kullanarak…
AWS Management Console
EC2′ya geri dönersek,
Bir EC2 sunucusuna sahip olmak için ilk olarak Amazon Machine Image (AMI) adı verilen image’lardan birini tercih etmemiz gerekiyor.
Image’ların arasında Amazon’un sunduğu Quick Start AMI’ları kullanarak hızlıca bir sunucu oluşturabiliyoruz.
Aynı zamanda herkes kendi AMI’ını hazırlayıp istediği zaman bunu kullanıp sunucu oluşturabiliyor. Mesela bir Centos dağıtımı üzerine apache,mysql,php kurup bu sunucudan bir image oluşturabiliyor aynı zamanda public kullanıma açabiliyoruz.
Sunucu yazılımı geliştiren firmaların da kendi ürünlerini kurup konfigüre ettiği ve resmi olarak sunduğu AMI’lar da var. Mesela Oracle ile birlikte hazırlanmış, üzerinde Oracle DB kurulmuş ve konfigüre edilmiş AMI’ları kullanabiliyoruz. Wowza Media Server kurulu AMI’lar da buna örnek verilebilir.
Son olarak Ubuntu gibi belli bir topluluk olarak, EC2 üzerinde çalışması için resmi olarak hazırlanan AMI’lar da var.
Kısacası, bir hayli alternatifimiz olan bu listeden, ihtiyaç duyduğumuz işletim sistemi ve servislerle ilgili en uygun AMI’yı seçerek sunucumuzu oluşturmamız gerekiyor. Seçimimizi yaparken dikkat edilecek bazı konular var, bunlarla ilgili bir kaç önerim olacak:
İşletim Sistemi
AMI seçerken genelde açıklama bölümünde sunucunun çalıştığı işletim sistemi de belirtilir. Bazı AMI’lara ihtiyaca göre özellikler eklenmiştir, eğer web’de o image’ın oluşturulma amacıyla ilgili güvenilir bir sayfa veya dökümandan referans almadıysanız uzak durun derim. Çünkü gerçekten doğru optimize edilmemiş ya da gerçekten ihtiyazcınızın ötesinde konfigüre edilmiş olabilir. Burda önerim, Ubuntu’nun resmi sitesinde belirttiği ya da Amazon Linux işletim sistemli AMI’lardan birini kullanarak kendi ihtiyacınıza göre sunucu yazılımları kurmak olacaktır.
Özellikle Amazon Linux AMI’ları gerçekten yüksek performansa ve güvenlik önlemlerine sahip. Ubuntu ve Amazon Linux’u aynı iş için denedim ve gerçekten hissedilir bir fark gözlemledim.
Denenemelere hızlı bir giriş için Amazon’un hazırladağı Quick Start AMI’larını da kullanabilirsiniz.
Architecture (32/64 bit)
Bir sunucu oluşturuken karar vermeniz gereken konulardan biri de sanal makinanın donanım olarak nasıl bir konfigürasyona sahip olacağıdır. Size micro instance adı verilen 613 MB hafızaya sahip bir konfigürasyondan, 68 GB hafızaya veya 33.5 ECU (1 ECU = 1 GHz 2007 Xeon işlemci) ‘ya sahip konfigürasyona kadar geniş bir seçenek listesi sunuyor.
Eğer small veya medium sunucular istiyorsanız AMI’yı 32 bit architecture seçmelisiniz. Daha büyük sunucular için ise 64 bit AMI’ları tercih etmelisiniz. AMI açıklamalarında 32/64 bit platform bilgisi muhakkak belirtilmiştir.
Root Store
İlk defa EC2 ile haşır neşir olduğunuzda Root Source tercihinin temel avantaj/dezavantajalarından pek haberdar olunamıyor. AMI seçerken iki farklı tipte Root Store seçeneği göreceksiniz.
EBS: Bu AMI ile oluşturduğunuz sunucularda, yönetim kosolundan istediğiniz anda yeni bir AMI oluşturabiliyorsunuz. Bu özellik sunucu sayısını arttırarak ölçeklenebilen sistemler için çok önemli. Gerekli kurulumları, ayarları yapıp hizmet verir duruma getirdiğiniz bir sunucudan yeni bir private AMI oluşturup gerektiğinde bu AMI’yı kullanarak sunucu sayınızı arttırabilirsiniz.
EBS Boot’un bir başka avantajı ise düşük ve ucuz donanım konfigürasyonlu Micro Instance adı verilen sunuculardan oluşturabilmeniz.
Instance: Pek bir avantajını bulamadım. Sadece bu daha eski bir yöntem olduğu için daha çok public AMI bulma şansınız var.
Region
Amazon sunucularınızı, Avrupa,Amerika veya Asya’da farklı merkezlerde oluşturma imkanı veriyor. Eğer siz Avrupa lokasyonlu bir sunucuya sahip olmak istiyorsanız AMI’ın bu lokasyon için oluşturulmuş olması gerekiyor.
Artık istediğiniz gibi bir sunucu oluşturabilirsiniz. Sunucularınızı çoğaltmak, onlara birer IP set etmek, önlerine bir load balancer koymak, firewall tanımlarını yapmak gibi konular yine AWS Management Console’dan dakikalar mertebesinde yapılabilen işlemler.



