Monthly Archives: January 2013

Tuncer KARAARSLAN ile Spatial Data Söyleşisi

Sosyal hayatımızda gezdiğimiz yerleri foursquare ya da diğer konum bazlı sosyal ağlar ile
paylaşmaktayız. Konum paylaşımlarını yakın çevremizde bulunan arkadaşlarımızı ile iletişime geçmek ya da yeni kişiler ile tanışmayı amaçlamaktayız.

Konum bazlı sosyal ağlar basit görünse de gelişmiş harita sistemleri ve veriler ile çalışılmaktadır. Konu teknik olarak incelendiğinde Spatial Data ve gelişmiş vektörel bilgilere ihtiyaç duyulmaktadır. 

Günümüz az sayıda kaynağın bulunduğu Spatial Data ve haritacılık konuları ile ilgili çok az teknik eleman bulunmaktadır. Özellikle internet girişimlerinin artış gösterdiği günümüz de incelenmesi ve iş fırsatlarını oluşturulması gereken konulardan biri olduğunu düşünmekteyim.

Spatial Data ile ilgili çalışmalar gerçekleştiren Tuncer KARAARSLAN ile söyleşi gerçekleştirmiş bulunmaktayız. Söyleşide Spatial Data, vektörel sistemler, .Net ilişkisi ve veritabanları ile ilgili olarak bilgiler verilmiştir.

Katkılarından dolayı, Tuncer KARAARSLAN teşekkür ederiz.

Önerilen Bağlantılar

PostgreSQL 
http://www.postgresql.org/

PostGIS
http://postgis.refractions.net/

Working with Spatial Data (Database Engine)
http://msdn.microsoft.com/en-us/library/bb933876(v=sql.105).aspx

Neo4j
http://www.neo4j.org/

Open Street Map
http://www.openstreetmap.org/

Open Street Map JOSM
http://wiki.openstreetmap.org/wiki/JOSM

 

Windows Azure ile Cloud Computing Uygulamaları – 5

Gün içerisinde birçok yeni konu okuyoruz. İşimize yarayan konuları, kendimize katmaya çalışıyoruz. Her yeni konu, hayatımıza yeni alışkanlıklar ve bakış açıları kazandırmaktadır.
Kazanılan yeni alışkanlıklar ve bakış açıları yeni değişimler oluşturmaktadır.

Yeni konuları öğrenmek, eğlenceli olsa da uygulama sürecinde zorlu, ağdalı ve sancılı olmaktadır. Her yeni konu başlanacak yeni bir nokta olarak düşünülse de mevcut olan bilgilerin üzerinde çıkılan kat olarak görülmesi gerekmektedir. Her yeni oluşturulan kat, zirveye giden yeni bir merdiven olarak görmeliyiz.

Değişim süreçleri, değişime karşı dirençleri oluşturur. Meydana gelen direnç ise, adaptasyon sürecinde yeni adımların atılmasına neden olmaktadır.

Günümüzde teknolojik yenilikler birkaç gün, hafta ya da aylık değişimler ile gerçekleşmektedir. Sürece geliştirici gözünde bakıldığında ise, son kullanıcıdan daha hızlı adapte olmamız ve fark yaratmamız gerekmektedir.

Geçmişte Visual Basic ve Classic ASP ile geliştirdiğimiz uygulamaların yerini, ASP.Net MVC ya da SharePoint ‘in kullanılarak geliştirilen projeler aldı. Zaman hızla ilerliyor. Geçen zaman içerisinde değişimleri fark ederek, yeni bilgilere sahip olarak yürünmek gerekmektedir. Süreç, geleceğe daha sağlam adımlar ile yürümeyi sağlayacaktır.

Her değişim süreci, yeni adaptasyon süreçleri oluşturmaktadır.  Geliştirici olarak, kullanılan Framework yapılarının kısa dönemler ile yeni sürümlerinin yayınlanması, teknik süreçlere hızlı adapte olmamıza neden olmaktadır. Teknik adaptasyon süreçlerinin hızlı, basit ve anlaşılır olabilmesi amacı ile uygulama ortamları hazırlamaktayız. Hazırlanan uygulama ortamları kimi zaman geçmişte gerçekleştirilen projelerden ya da yeni oluşturulan uygulama senaryoları ile şekillenmektedir.

Teknik adaptasyon süreçlerinde hızlı, anlaşılır ve eğlenceli olması amacı ile uygulama projeler geliştirmekteyiz. Cloud Computing mimarisi ve özellikle Windows Azure Platform
anlam amacı ile uygulama projesi geliştiriyor olacağız.

Windows Azure Platform ‘u anlama ve ona eğlenceli şekilde adapte olabilmemiz amacı ile “WindowsAzure.FunnyApp” isimli uygulama projesini geliştiriyor olacağız.

Geliştirilmesi amaçlanan uygulama projesi, günlük hayatımızın parçası haline gelen “Instagram” projesine benzemektedir. Gerçekleştirilen proje ile kullanıcıların diledikleri fotoğrafları uygulama vasıtası ile paylaşması amaçlanmaktadır. Proje içerisinde bazı senaryolar aşağıda belirtilmiştir.

  • Kullanıcı hesabının işlemleri (kullanıcı adı, parola, eposta)
  • Resim yükleme alanının oluşturulması (istenen resmin yüklenmesi, açıklama, ilgili etiketler)
  • Yüklenen resimlerin thumbnail boyutlarında şekillendirilmesi (Windows Azure Worker Role)
  • Yüklenen resimlerin görüntülenmesi (thumbnail boyutunda resimlerin listelenmesi)
  • Resminde detay gösterilmesi (açıklama, etiketler ve yüklene boyutlarda resim)
  • Yorum giriş alanın oluşturulması (kullanıcı adı, eposta ve yorum)
  • Yorumların listelenmesi (Kullanıcı adı ve yorum gösterilmesi)

Belirtilen uygulama senaryolarına bağlı, veri yapılarının oluşturulması gerekmektedir.
Aşağıda uygulama senaryolarının gereksinimlerinin sağlanması amacı ile oluşturulan sınıfın yapısı bulunmaktadır.

Geliştirilmesi amaçlanan uygulama projesi içerisinde kullanıcıların işlemleri gerçekleştirmesi
amacı ile Windows Azure Web Role(Web uygulaması), resim işleme ve diğer yoğun zaman gerektiren işlemlerin gerçekleştirilmesi amacı ile Windows Azure Worker Role(Windows
Service
nesnelerini benzer çalışma prensipleri olan Windows Azure Role yapısıdır.) kullanılacaktır. Uygulama veri işlemleri ve katmanlar arasında haberleşme işlemlerini, Windows Azure Platform nesneleri olan Blob, Table ve Queue nesnelerini kullanacaktır. 

Uygulama projesi Github ve Codeplex üzerinde bulunan repository üzerinde güncel kodları paylaşılmaktadır. Uygulama projesi ile ilgili olarak yaşanan problemleri çözümlenmesi amacı ile github ya da Codeplex üzerinde bulunan Wiki kullanmanızı önermekteyim. Uygulama
repository adresleri aşağıda belirtilmiştir.

Codeplex / https://windowsazurefunnyap.codeplex.com/

Github / https://github.com/ibrahimatay/WindowsAzure.FunnyApp

Mesleki gerekliklere bağlı olarak şekillenen hayatlarda, adaptasyon öğrenilmesi zor olmasına
karşın, çözümleri de yanında getirmektedir. Yeni bir adaptasyon sürecine girmekteyiz. Ama geçmişte sahip olduğumuz bilgilerin üzerine yeni kat oluşturmaktayız. “WindowsAzure.FunnyApp
projesi ile Windows Azure Platform ve Cloud Computing mimarisini anlayarak. Eğlenceli olarak sürece adapte olmayı amaçlamaktayız.

Windows Azure ile Cloud Computing Uygulamaları – 4

Zamanın geçtiğini, yaşam içerisinde meydana gelen değişikler ile fark etmekteyiz. Gün
güneş ışığı ile yeni başlangıçlar hazırlanmakta, yeni başlangıçlar sahip olduğumuz alışkanlıkların değişmesine neden olmaktadır. Zaman insanlara adapte olmayı ve ilerlemeyi öğretmektedir.

İnsanlar değişmekte ve değişimlerine en büyük katkıyı, geliştirilen uygulamalar ve kullanım süreleri etki etmektedir. Geçmişte konuşmak için kilometrelerce uzaklıkları aşmak için uğraşırken, artık bilgisayarın diğer yanında görebiliyoruz. Günlük hayatta kullandığımız uygulamalar hayatlarımızı değiştirdi. Meydana gelen değişim uygulama geliştiricilerinin uygulama geliştirme süreçlerini etkiledi ve süreçlere hızlı adapte olmasına neden oldu.

Uygulama geliştirme süreçleri, geliştirilecek uygulama türünü, geliştirme aşamasında
kullanılacak olan Framework ve takım kültürüne göre farklılıklar göstermektedir. Günümüzde Web uygulamalarının geliştirilmesi ve kullanıcı yoğunluklarının artması ile uygulamaların Windows Azure ve benzeri hizmet sağlayıcı sistemlere taşınmasına yönelik çözümler oluşturulmaya başladı.

Günümüzde Cloud Computing sağlayıcılara yönelik geliştirilen uygulamalar, sağlayıcı şirketin yaşam süresine ilişkili olarak yaşamını devam ettirmektedir. Cloud Computing sağlayıcılar ve özellikle Windows Azure Platfom, sağlamış olduğu Cloud Computing hizmetilerini European Commission ve benzeri kurumların standart çalışmalarına bağlı olarak şekillendirmektedir.

Cloud Computing üzerinde barındırılacak olan uygulamaların, standartlarına bağlı olarak
geliştirilmesi Cloud Computing sağlayıcı şirketlerin de bağımsız olarak, uygulamaları istediği sağlayıcı şirkette konumlandırmasına olanak sağlanmaktadır.

Uygulama geliştirme süreçlerinde, geliştirilmesi istenen uygulamaya bağlı olarak, farklı
uygulama gereksinimleri ortaya çıkabilmektedir. Gereksinimler uygulama geliştirme aşamasında başlayarak, uygulama yaşam döngüsünün tamamlanması sürecin de de devam etmektedir. Geliştirme süresini tamamlanmış olan uygulamalar, yaşamları boyunca gereksinimlere bağlı olarak farklı süreçlere dahil edilebilmektedir. Söz konusu süreçler uygulamanın Cloud Computing sağlayıcısına taşınması ya da Cloud Computing odaklı olarak geliştirilmesi şeklinde senaryolaştırılabilmektedir. Aşağıda uygulamaların Cloud Computing sağlayıcılarından olan Windows Azure Platform ’una örnek taşıma senaryoları belirtilmiştir.

Senaryo – I

Geliştirme süreci tamamlamış ve çalışmakta olan uygulamalarımız bulunmakta. Uygulamaları Windows Azure Platform ‘una taşımak istiyoruz. Fakat uygulamalar ile ilgili yeni geliştirme yamamıza zamanımız bulunmamaktadır. Uygulamalarımızı Windows Azure Platform ’una nasıl taşıyabiliriz?

Çözüm Önerisi – I

Taşınması istenen uygulamaların, Windows Azure Platform ’un sağladığı kolaylıklarında biri olan sanal makine üzerine konumlandırarak yaşam sürecine devam ettirilebilir.

 Senaryo – II

Çalışmakta olan uygulamalarımız bulunmakta. Uygulamalarımız Linux üzerinde çalışmakta ve Windows Azure Platform ’un kullanmak istiyoruz. Fakat uygulamalarımızın kullanmış olduğu veritabanı ve uygulama mimarisini (programlama dili ya da 3rdParty yazılımlar) Windows Azure Platform desteklememekte. Uygulamalarımızı Windows Azure Platform ’una taşmak için ne yapmamız gerekmektedir?

Çözüm Önerisi – II

Windows Azure Virtual Machine özelliği ile uygulamalar için istenen yaşam ortamı oluşturulabilir. Windows Azure Virtual Machine desteği ile Linux (CentOS,Ubuntu ve Suse),
Windows Server(2008 ve 2012) işletim sistemleri kullanılabilmektedir.  Taşınması istenen uygulamaların gereksinimi olan 3rdParty yazılımlar ise, Windows Azure Virtual Machine bağlanılarak kurulumları yapılabilmektedir.  Çalışmaların gerçekleştirilmesi ile istenilen uygulamalar Windows Azure Platform ’una kolaylık ile taşınabilmektedir.

Senaryo – III

Uygulamalarınızı çalışmakta olduğu mevcut sanal makineler (Hyper-V ya da VMware üzerinde)
bulunmakta. Sanal makinelerin bulunduğu donanımlar yetersiz ve zaman ile gereksinimler
artmakta. Artan gereksinimleri hızlı ve düşük maliyet ile çözmek istiyoruz. Süreci nasıl çözebiliriz?

Çözüm Önerisi – III

Kullanımda bulunan sanal makineler Windows Azure Platform’a taşınması ile düşük maliyetli
ve artan ihtiyaçlara cevap üretebilen sistemler oluşturulabilmektedir. Kullanımda bulunan sanal makineler Windows Azure Virtual Machine üzerinde taşınarak, basit ve hızlı şekilde işlemler gerçekleştirilebilmektedir.

Belirtilen taşıma senaryoları, uygulama süreçlerinde kullanılması muhtemel önerilerdir. Bu
öneriler taşınması istenen uygulama ve izlenmesi gereken stratejilere bağlı olarak değişiklikler ve farklı uygulanmalar olabilir.

Uygulama geliştirme süreçleri, teslim süreleri ya da uygulama geliştirecek olan takıma
göre farklılıklar göstermektedir. Özellikle Cloud Computing odaklı uygulama geliştirme süreçlerinde farklı senaryolar üretilebilmektedir. Aşağıda bazı Windows Azure Platform yönelik uygulama geliştirme senaryo örnekleri belirtilmiştir.

Senaryo – I

Geliştirmeye başlayacağımız olan uygulamanın teslim tarihi çok yakın ve eğitim alma
zamanımız bulunmamakta. Uygulamamanızı Windows Azure Platform odaklı olarak geliştirmek istiyoruz. Uygulamamızı nasıl geliştirebiliriz?

Çözüm Önerisi – I

Klasik uygulama geliştirme süreçlerinde SQL Server veritabanı, verilere performanslı erişebilmek için .Net Cache ya da 3rdParty olarak MemCached kullanmaktayız. Windows Azure Platform odaklı uygulama geliştirme sürecinde SQL Database ve geliştirilen uygulamaya bağlı olarak Hadoop ya da MongoDB gibi NoSQL veritabanları kullanılabilmektedir. Uygulama Caching süreçleri ile ilgili olarak ise, MemCached kullanabilmemize olan sağlamaktadır. Sağlanan kolaylıklar ile mevcut uygulama geliştirme bilgilerini kullanarak Windows Azure Platform ’un da uygulamalarımızı konumlandırabilmekteyiz.

Senaryo – II

Geliştirmek istemiş olduğum uygulamayı Windows Azure Platform da en iyi performans ve üst
düzey güvenlik ile çalışmasını istiyorum. Uygulamamı nasıl geliştirmeliyim?

Çözüm Önerisi – II

Geliştirilmesi istenen uygulamayı, üst düzey güvenlik seviyesinde çalıştırılması amaçlandığı
senaryolarda Windows Azure Cloud Services ve Windows Azure ‘un veri yığın nesneleri
olan Table ve Blob nesneleri kullanılması önerilmektedir. Gerçekleştirilen geliştirme Windows Azure Platform enstrümanlarını kullanarak yapılmış olacaktır.

Uygulama geliştirilmesi ya da mevcut uygulamaların Windows Azure Platform ’a taşınması
ile ilgili birçok senaryo üretilebilir. Geliştirilen senaryolar; zaman, maliyet ya da süreçlerin basit olarak gerçekleştirilebilmesi mümkün olmaktadır.  Örnek verilen senaryolar, istek ve mevcut koşullara bağlı olarak şekillendirilebilmektedir. Windows Azure Platform ‘u ile şirketler minimum maliyet ile özgür çalışmalarına olanak sağlamaktadır.

http://msdn.microsoft.com/en-us/library/windowsazure/jj853352.aspx

http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf

http://ec.europa.eu/information_society/activities/cloudcomputing/docs/com/com_cloud.pdf