Sunday, July 17, 2016

Open Shift incelemesi

Yakın bir zamanda Open Shift (https://www.openshift.com/) isimli web sitesi ile karşılaştım. Son dönemde AWS ürünleri üzerinde çalıştığımdan ilgimi çekti. Open Shift kendi sitelerindeki ifade ile, "Red Hat'a ait, yazılımcıların hızlıca geliştirme, barındırma ve ölçeklendirme (scaling) yapabilecekleri "cloud-based" bir "platform-as-a-service, PaaS" sistemi. Bunu okuyunca aklımda canlanan şey, AWS'nin Elastic Beanstalk ürünü oldu.

Open Shift sisteminde herşey bir "cartridge" olarak sunuluyor. Cartridge mantığını bir lego gibi düşünebilirsiniz. Bir web sitesini düşünerek örneklendirecek olursak; bir web sitesi server tarafında çeşitli servislerin birleşimi ile çalışabiliyor. Minimumda size yazdığınız kodu çalıştırıp, isteklere cevap verecek bir "web server" gerekiyor. Statik siteler dışında, doğal olarak bir database katmanına da ihtiyaç duyuyorsunuz. Bazen yoğunluğu dağıtmak için bir load balancer da genel ihtiyaçlardan birisi olabiliyor. İşte bu katmanların her biri, sizin bir araya getirebileceğiniz "cartridge" ler oluyor. Bunları bir araya getirebilmek için de bunların kurulumu, işletim sistemi vs. gibi konularla uğraşmıyorsunuz. Bir listeden seçiyorsunuz, yan yana getiriyorsunuz ve herşey otomatik olarak çalışmaya başlıyor.

Tabii verdiğim bu örnek, olayın detayını anlatmak için biraz basit kaldı. Çünkü Open Shift de seçenekler daha esnek. Örneğin, bir cartridge olarak PHP5.4 seçip, PHP çalışan bir yapıya kavuşabileceğiniz gibi; PHP5.4 gibi birşey seçmek yerine, Codeigniter framework cartridge'i seçip, PHP meselesini es geçerek Codeigniter ile devam edebiliyorsunuz. Ya da PHP framework yerine Wordpress cartridge çalıştırabiliyorsunuz.

Olası cartridge'lerden bazı örnekler de yazayım :

PHP grubu : PHP5.4, CodeIgniter 2, Laravel 5.0, Magento Community Edition, Symfony 2.3.6, ownCloud, Cacti, vb.

Python grubu : Python 2.6/2.7/3.3, Django, Flask, Tornado Web Server, CherryPy, vb.

Ruby grubu : Ruby 1.8/1.9/2.0, Ruby on Rails 3/4, Sinatra, Redmine, Keen IO, Jekyll, vb.

Ve diğerleri : MongoDB, MySQL, PostgreSQL, Cron, Web Load Balancer, JBOSS Application Server, Tomcat, Nodejs, Perl 5, Go Language, MEAN, Clojure, Reveal.js, vb.

Bunlar arasında aradığınızı bulamadıysanız üzülmeyin :) Çünkü Open Shift aynı zamanda kendi "cartridge"lerinizi de evinizde hazırlayıp, bu sisteme yüklemenize izin veriyor. (https://hub.openshift.com/quickstarts/21-cartridge-development-kit)

Güzel bir özelliği daha var bu sistemin, test etmek ve incelemek için kredi kartınızı vermek zorunda değilsiniz. Çünkü ücretsiz hesaplara 3 adet small "gear" kullanabilme hakkı verilmiş. "Gear" sizin seçtiğiniz cartridge'lerin runtime da çalıştığı bir nevi "slot"lara verilen isim. Yani ücretsiz hesapta size verilen 3 gear'a seçtiğiniz 3 cartridge i ekleyip bir "application" çatısı altında çalıştırabilirsiniz. Mesela, ben bir test uygulaması oluşturup altına PHP 5.4 ve PostgreSQL 9.2 cartridge'lerini ekledim.

Benim eklediğim PHP hello world uygulamasına (tek satır bir yazı var sadece :)) şuradan ulaşabilirsiniz :

http://test-uguraslan.rhcloud.com/

Uygulamanın yönetim panelinde aşağıdaki şekilde görünmektedir.


Open Shift konusunda anlatmak istediğim başka bir sürü konu var ama genel bir bilgi vermek amacıyla bu kadarı yeterli olacaktır.