Category Archives: NEDİR?

[SOA]CILAR ve [ANTI-SOA]CILAR

soa.jpg

GeçtiÄŸimiz hafta Cumartesi günü IBM ve Ceturk iÅŸ birliÄŸi ile keyifli bir SOA semineri düzenlemiÅŸtik. Seminere ait sunumu indirmek için Arden AGOPYAN ‘ın blogunu ziyaret edebilirsiniz. Bu yazıyı da sadece seminer sunumunu paylaÅŸmak için yazacaktım ama konuyu bu kadar yüzeysel bırakmaya içim el vermedi.

SOA ‘ya karşı olan ilgim ben daha öğrenciyken okulumzda gerçekleÅŸtirilen Ulusal Yazılım Mimarileri Konferansı ‘a katıldığım bir sunumda baÅŸlamıştı. (Daha öğrenciyken dediÄŸime bakmayın çok uzun zaman olmadı öğrenciliÄŸimi sonlandıralı.) KonuÅŸmacı olarak gelen kiÅŸi (Prof Dr. M. Naci Akkök) her ne kadar Oracle çalışanı (Chief Architect) olsa da seminer boyunca sık sık IBM ‘den ve SOA ile IBM arasındaki baÄŸdan bahsetti durdu. Bir Oracle çalışanının bu kadar çok IBM ‘den bahsetmesi garibime gitmiÅŸti açıkcası. (Bu arada seminerin konusu: “A Practical and Methodical Interpretation of the Service-Oriented Architecture” idi)

Zamanla iÅŸin içine girdikçe IBM ‘in SOA alanındaki çalışmalarına ben de ÅŸahit oldum. Oracle adına bizlere SOA anlatmaya gelen kiÅŸi Oracle ‘ın bu alandaki ürünlerden ve SOA yaklaşımından da bahsetmiÅŸti ve o zamanlar anlattığı konuları anlamak bir hayli güçtü benim için. (Sadece benim için deÄŸil ÅŸu anki patronum Semih Çetin için de anlatılanlarda gariplikler ve anlaşılması güç noktalar vardı ki kendisi de sık sık sunumu bölüp hararetli sorular sormuÅŸtu.) Sunumda binlerce parçadan oluÅŸan bir sisteme ait bir resim gösterildi ve SOA budur dendi. (Resimdeki parçaları seminerden 2 saat sonra yavaÅŸ yavaÅŸ çözmeye baÅŸlamıştım.) Güya iÅŸ akışını ve süreçleri basitleÅŸtiren SOA , o resmi gördükten sonra bana çok karmaşık birÅŸeymiÅŸ gibi gelmiÅŸti.

Åžimdilerde ise dahil olduÄŸum projede Servis Yönelimli Mimari ‘yi (Service Oriented Architecture) elimizden geldiÄŸince uygulamaya çalışıyoruz ve böylesine büyük bir projede ciddi manada faydasını görüyoruz. Hatta bazen tembellik edip “Kesin bunun servisini birisi yazmıştır” diyerekten ilgili iÅŸlemi yapacak servisi bulma çabasına giriyoruz. (Aslında tembellikten deÄŸil sadece projedeki kod tekrarını önlemek için) Yada baÅŸka birisinin üzerinde çalıştığı modül ile ilgili iÅŸlem yapmamız gerekiyorsa kendisine ihtiyacımızı anlatıp bize bir servis yazmasını istiyoruz (Yani gidip yüzlerce sayfalık o modüle ait dokümanı oturup okumuyoruz) Kısacası biz SOA ‘yı seviyoruz ve kullanıyoruz.

Fakat bunlar benim kiÅŸisel görüşlerim. Yani bir yandan birileri SOA ‘ya hayranlık duyarken birileri de SOA Facts yazısındaki gibi iÅŸin dalgasını geçebiliyor. Sanırım her yeni teknoloji (Hatta SOA ‘nın yeni bir yaklaşım olup olmadığı konusunda da tartışmalar var ) bizlere kutuplaÅŸmak için bahane oluyor. Kim o teknolojiyi adam gibi kullanmayı becerebiliyorsa onu yerlere göklere sığdıramıyor ve ondan bir “SILVER BULLET” gibi bahsediyor. Bu kadar çok fanatiklikten rahatsız olanlar da hemen karşıt bir cephe oluÅŸturuyorlar. Anlayacağınız ÅŸu anda ciddi bir SOA ve ANTI-SOA kutuplaÅŸması yaÅŸanıyor.

Burada suçlu olan elbette teknoloji deÄŸil. Yani birileri onu efektif bir ÅŸekilde kullanamıyorsa yada kullanmaması gereken bir durumda kullanmaya kalkıyorsa ve baÅŸarısız oluyorsa burada suç tamamen o kiÅŸe aittir. Öte yandan her zaman yaptığımız gibi SOA ‘yı ölümsüzlüğün formülü olarak görmeyi de doÄŸru bulmuyorum. Hele de Yazılım MühendisliÄŸi gibi bir alanda birÅŸeyleri bu kadar sıkı savunmak bana pek de akıllıca gelmiyor. (Tabi bu iÅŸten para kazanıyorsanız durum deÄŸiÅŸir ??) Yazılım MühendisliÄŸi anlanında “iÅŸte en iyisi budur” denen kavramlar bir süre sonra herÅŸeyin suçlusu olarak gösterilebiliyor. Bu kadar çok kavramın türemesini bazı kiÅŸiler Yazılım MühendisliÄŸi ‘nin sürekli geliÅŸiyor olması ÅŸeklinde yorumlarken bazıları da Yazılım MühendisliÄŸi alanının yeterince olgunlaÅŸmamış olması ÅŸeklinde yorumluyor.

Bir önceki paragrafta SOA ‘nın efektif bir ÅŸekilde kullanılamamasından bahsetmiÅŸtim. Burada sanırım gözden kaçan en önemli nokta her teknolojinin her iÅŸ modeline uygun olmadığı noktası.. Hatta seminerde Arden SOA mimarisine geçmek isteyen ÅŸirketlerin önce iÅŸ süreçlerini incelediklerini ve gerekli deÄŸiÅŸiklikleri yaptıktan sonra SOA altyapısını oturttuklarını belirtmiÅŸti. Bu alanda yatırım yapmanın ciddi bir maliyeti olduÄŸundan , adam akıllı bir geri dönüş alabilmek için iÅŸi kuralına uygun yapmakta fayda var. Yine bizlerin ÅŸirket içinde biribirimizden servis istediÄŸinden bahsetmiÅŸtim. Burada da en önemli nokta TAKIM ÇALIÅžMASI. EÄŸer ÅŸirket içi iletiÅŸim zayıfsa oluÅŸturulan servis havuzu efektif bir ÅŸekilde kullanılamaycaktır.

SOA ile ilgili görüşlerimi belirttikten sonra şimdi size soruyorum siz hangi cephedesiniz? SOA mı ANTI-SOA mı ?

SaÄŸlıcakla kalın…

Konuyla ilgili linkler:

SOA Hakkında Herşey
What is SOA, really?
Service Architecture – SOA
SOA From a Corporate Perspective
IBM Developerworks – SOA

NOT: Seminerden sonra bana enteresan e-postalar gönderen arkadaşlar için ek açıklama:

*SOA bir uygulama deÄŸildir.
*IBM ‘in SOA adlı bir ürünü yoktur.
*Haliyle SOA ‘nin Crack ‘i de yoktur.
*SOA bir ürün değildir ve haliyle SOA.exe diye de birşey mevcut değildir.
*SOA web servisi demek deÄŸildir ,web servisi de SOA demek deÄŸildir.

SQL SERVER 2005 ‘DE FILLFACTOR KAVRAMI

sqlserver.jpgBlogumdaki SQL Server 2005 ile ilgili önceki yazılarımda SQL Server Storage Engine ‘in biraz sorunlu olduÄŸundan bahsetmiÅŸtim. Hal böyle olunca verilerimizi SQL Server üzerinde tutarken daha da dikkatli olmamız gerekiyor. Ben de bu konuda dikkat etmeniz gereken noktalardan bir kaçına deÄŸinmeye karar verdim.

SQL Server verileri diskten EXTENT dediğimiz formatta okur ve yazar . (the smallest unit of data that SQL Server can allocate is 64 KB) Extent ise bünyesinde 8 tane Page barındırır. Windows işletim sistemi ortamında 8*Page_Size=64K eder (İşletim Sistemleri dersini alan arkdaşların kulaklarını da çınlatmış olduk) ki bu da diskten bir defada okunabilecek veri boyutuna denk gelir.

Fillfactor kavramı ise verilerin page üzerinde ne kadarlık bir alanı kaplayacağını belirler. Yani veritabanı yönetim sisteminiz bir page ‘in ne kadarlık kısmını (yüzde olarak 1..100 aralığında) dolduracak ne kadarlık kısmını boÅŸ bırakacak bunu belirleyen parametredir. Fillfactor deÄŸeri index oluÅŸturulurken veya rebuild edilirken karar verilen bir deÄŸerdir. Mesela indeks oluÅŸtururken 70 ‘lik bir fillfactor deÄŸeri belirlediÄŸinizde page üzerinde yüzde 30 ‘luk bir alan sonradan eklenecek veriler için ayrılmış olacaktır. Burada dikkat edilmesi gereken en önemli nokta fillfactor deÄŸerini 100 vermek ile 0 (sıfır) vermek arasında bir fark olmadığıdır. Fillfactor deÄŸerleri 1-100 arasındadır o nedenle 0(sıfır) verdiÄŸinizde bu 100 olarak kabul edilir ve tüm page doldurulur.

Gelelim bu kavramların önemine: EÄŸer veritabanınızdaki okuma sayısı fazla ise bu deÄŸerin yüksek olması çok önemli yani 100 seviyesinde olması en ideali (Zaten server bazında default deÄŸer 100 ) ama okuma iÅŸlemlerinin yanı sıra sıklıkla veri ekleme ve güncelleme (yazma) da yapıyorsanız böyle zamanlarda PAGE SPLIT dediÄŸimiz vakit kaybettirici bir durumla karşılaÅŸmanıza neden olabilir.(Elbette kaybettiÄŸiniz vakti anlamanız o kadar kolay deÄŸil) Nasıl ki multi-threading yapabilen bir iÅŸletim sistemi CPU ‘da processleri çalıştırırken context-switching yapıyorsa (İşletim Sistemleri dersini alan arkadaÅŸların kulaklarını bir kez daha  çınlatmış oldum) aynı durum veriler okunurken ve yazılarken de geçerli. Tam dolu bir page’de sorgulama yaptığınızda aradığın verinin o page içerisinde olma olasılığı daha fazla olur. Öte yandan tam dolu bir page ‘e yazmaya kaltığınızda dolu olduÄŸu için diÄŸer page ‘e geçilir (Page Split) ve page split iÅŸlemi sırasındaki hesaplamalar vakit kaybına neden olur.

Tablolarınızın fillfactor bilgilerini incelemek için SQL Server üzerinde dbcc showcontig komutundan faydalanabilirsiniz. Aşağıdaki örnekte Northwind veritabanınki Categories tablosuna ait bilgiler çağırılmıştır:

use Northwind

go
dbcc showcontig (Categories) with tableresults  (tableresults parametresi seçimliktir)

*Pages Scanned:1 Extent ‘i aşıyor mu aÅŸmıyor mu görmenizi saÄŸlar
*Extent Switches: 1 ise switch var demektir (tehlikeli bir durum :) )
*Scan Density: Düşükse indeksleri yeniden oluşturmak faydalı olabilir (ALTER INDEX REBUILD )
*Avg Page Density: Bu bilgi aracılığıyla pagelerin doluluk oranları hakında bilgi sahibi olabilirsiniz.

Fill factor kullanarak index oluşturmak isterseniz de aşağıdaki örnek size yol gösterebilir:

CREATE CLUSTERED INDEX deneme_indx ON my_table (col1, col2) WITH FILLFACTOR = 50 

Yazımı bitirmeden evvel neden bu konuyu bloguma taşığıma da deÄŸineyim. JDBC_TR mail grubumuzda arkadaşım Emrah Åžeker yapacağı proje için performanslı bir DBMS arayışına girmiÅŸti ve ona cevap verirken Flickr ‘ın altyapısını anlatan bir sunumda bahsi geçen yazma ve okuma deÄŸerlerinin oranına deÄŸindim. (Kullanıcılar her 14 okumya (select) karşılık 1 yazma (insert,delete,update) yapılıyorlarmış) Yani aldığınız bir DBMS ‘i default deÄŸerlerle kullanmak her zaman akıllıca olmuyor. İşinizi ve kullanıcılarınızı iyi analiz etmek gerekir diye düşünüyorum. Yine aynı ÅŸekilde perfomans sorunlarını çözerken olayları donanım güncellemeleri ile ölçeklemeye kalkmak her zaman beklenen sonuçları doÄŸurmayacaktır. Diyorsanız ki kim bu kadar detaylı ÅŸeylere dikkat ediyor? Ben de diyorum ki Dikkat Eden Kazanır!

Åžimdilik benden bu kadar saÄŸlıcakla kalın…

-Tavsiye-
Who Cares about FillFactor?
SQL Server 2005 Books On-Line
Understanding SQL Server’s DBCC SHOWCONTIGÂ

NOT: Yukarıda bahsi geçen konu diÄŸer DBMS ‘leri kapsayacağı gibi kapsamaya da bilir. O nedenle bu yazıyı sadece bilgi sahibi olduÄŸum SQL Server ‘i örnekleyerek yazdım.

SAFARI 3 PUBLIC BETA İLE WEB PERİŞANLIĞI

safari.jpgÇoÄŸunuz duymuÅŸtur ama ben yine de ufak bir hatırlatmayla yazıma giriÅŸ yapmak istiyorum. Apple ‘ın Mac platformunda kullanılan internet tarayıcısı Safari artık PC platformunda da kullanılabiliyor.

Bu haberi duymamla Safari 3′ü makinama indirip kurmam bir oldu çünkü hep Apple Store ‘larda gördüğüm Mac ‘lar aracılığıyla denediÄŸim Safari ‘yi incelemek için iyi bir fırsattı bu ama beklentilerimi karşılayamadığını baÅŸtan belirtmeliyim.

Öncelikle ürün sayfasında yer alan o Blazing Performance ‘yi ben nedense bir türlü göremedim ? Yani ortada bir yerlerde ciddi bir sorun vardı. Ben ürünü doÄŸru düzgün çalıştıramadım ki performansını ölçeyim. Bir ara kendi sistemimden şüphelendim ama internette ufak bir arama yapınca gördümki sorun bende deÄŸildi.

Sürekli kilitlemeler ve çökmelerle geçti Safari denemelerim. Hatta yazıya eklemek için bir screenshot alacaktım , tam o sırada yine çöktü. Dedim insanlara bir faydam dokunsun bir hata raporu göndereyim ,bu defa da bilgisayarım kilitlendi.

Tüm bu olumsuzluklara raÄŸmen itiraf etmeliyim ki bazı siteler safari yorumuyla daha güzel görünüyor. Sanırım tarayıcının kendi Internal CSS ‘inden kaynaklanan bir durum bu. Fakat yaptığım site uyumluluk testlerinde malesef bazı sitelerin de doÄŸru  düzgün görüntülenemediÄŸini gördüm. (Ör: rememberthemilk)

Safari ‘nin en çok hoÅŸuma giden özelliÄŸi dahili RSS (Built-in RSS) okuyucusu oldu. Basit ve temiz bir arayüze sahip bu RSS okuyucu akıllıca düşünülmüş.

Güvenlik konusunda yorum yapma gibi bir düşüncem yoktu ama okuduklarım karşısında dehÅŸete düşmedim desem yeridir. Safari ‘nin bu zamana kadar güvenli olarak bilinmesinin nedeni kullanıcı sayısının diÄŸer tarayıcıları göre az olmasıydı. Bir yazılım ne kadar çok kiÅŸi tarafından kullanılırsa o kadar çok güvenlik açığı tespit edilebiliyor. Ondandır ki Internet Exploerer ‘ı güvenliksiz olmakla suçlayan Firefox ‘un da zamanla açıkları bir bir ortaya çıkmıştır. Aynı durum Safari için de geçerli kullanımı yaygınlaÅŸtıkça daha fazla saldırıya maruz kalacaktır. (Bknz: Konuyla ilgili güzel bir yazı)

Bu özellikler dışında 12 Reasons You ‘ll Love Safari baÅŸlığı altında geçen diÄŸer özellikler (Easy bookmarks, Pop-up blocking, Inline find, Tabbed browsing , SnapBack, Forms auto-fill, Resizable text-fields ) zaten diÄŸer tarayıcılarda da mevcut.

Özetle ÅŸu an beta aÅŸamasında olan Safari 3′ü masaüsütünüze taşımak için çok erken hatta Firefox gibi çok güzel bir web tarayıcısı varken (Eklentilerle daha da güzelleÅŸtirilebilir) Safari 3 beta sürecini tamamlasa da sisteminize dahil etmek için pek de saÄŸlam bir gerekçe sunmuyor. Ama bu son cümle için bir istisna var. EÄŸer web uygulaması geliÅŸtiryorsanız yaptığınız web sitesi, web projesi vs. ‘nin Safari ile görüntülenip görüntülenemediÄŸini yada ne kadar Cross-browser olduÄŸunu görmeniz için Safari ‘yi de sisteminize dahil etmeniz gerekebilir.

Apple ‘ın bu haldeki bir ürünü son kullanıcıya sunması beni çok ÅŸaşırttı çünkü Apple ürünlerini uzun test süreclerinin ardından beta etiketi koymadan piyasaya sürmeyi seven bir ÅŸirket. Her ne kadar Apple ürünlerine beta etiketi koymasa da bir ürünün son kullanıcıyla buluÅŸtuÄŸu ilk anda otomatik olarak beta sürecine girdiÄŸini unutmamak gerekir diye düşünüyorum. (Bknz: Beta test)

ieformac.jpgInternet Explorer ile Microsoft Mac kullanıcılarının hayatına daha önceden girmiÅŸti. Åžimdi de sıra Apple ‘da. Yazılım devleri sürekli birbirlerinin ceza sahalarına girmek için büyük bir çaba içindeler. Safari daha stabil bir hale gelirse ve bizlere kullanmamız için GERÇEKÇİ nedenler sunarsa Internet Explorer Windows platformunda bir darbe daha almış olacak. Söz tarayıcılardan açılmışken Internet Explorer ‘dan vazgeçeyemeyenler ve Light-weight bir tarayıcı arayanlar Maxthon ‘u deneyebilirler.

Åžimdilik benden bu kadar. Herkese mutlu pazarlar diliyorum…

JavaFX GELDİ SIKINTI BİTTİ Mİ?(import javafx.ui.*)

l0_javafx-landing.jpg
Bir süredir blogumda Zengin İnternet Uygulamaları (Rich Internet Application[RIA]) pazarındaki devlerin kapışmasını yazıyorum. Microsoft ‘un WPF ve bunun internet uygulamalarında kullanılabilir versiyonu olan WPF/E teknolojisi hakkında yazdıktan sonra Adobe ‘nin de Apollo ile cevap verdiÄŸininden bahsetmiÅŸtim. Sonra WPF/E ad deÄŸiÅŸtirerek Sliverlight oldu. Kısaca ona da deÄŸinmeye çalışmıştım. Bir de bu geliÅŸmelere Mono ekibinin MoonLight projesi eklenmiÅŸti. Bu proje sayesinde WPF/E gerçekten (E)verywhere olabilecek demiÅŸtik.

Ama hep gözümüz birilerini aradı. Yorumlarda hep kulağını çınlattık kendisinin. JAVA Dünyası peki ne diyecekti. Hep bu soruyu sorduk. JDK 1.6 ile görsellik konusunda yeni yeni toparlanmaya baÅŸlayan Java dünyası dolayısıyla SUN tüm bu geliÅŸmelere sessiz mi kalacaktı? Artık bizlerde JAVA iÅŸin business kısmında , görsellikten elini ayağını çekti gibi bir izlenim oluÅŸmaya baÅŸlamışken JavaFX ile SUN “Ben de buradayım” dedi.

Aslında JavaFX ‘i yazmak için biraz geç kaldım. Çünkü bu teknoloji 7-11 Mayıs 2007 tarihleri arasında San Fransisco ‘da düzenlenen JavaOne konferansında duyurulmuÅŸtu. Ama diÄŸerlerini yazıp da JavaFX ‘ten bahsetmemek olmaz diye düşündüm.

JavaFX nedir diye birazcık araştırınca görüyoruz ki Java teknolojisine dayanan ve hayatımızdaki hemen her araçta karşımıza çıkmayı hedefleyen bir teknoloji. JavaFX ailesi bünyesinde JavaFX Script ve JavaFX Mobile gibi iki alt teknolojiyi barındırıyor.

Özellikle JavaFX Mobile ile mobil cihazlar için kaliteli ve görsellik açısından doygun uygulamalar geliştirmek kolaylaşacak gibi görünüyor. Çünkü hem bu uygulamaların yazılması hem de yürütülmesi için gerekli altyapıyı bünyesinde barındırıyor. JavaFX Mobile yürütme ortamı sadece JavaFX Mobile teknoljisiyle yazılmış uygulamaları değil aynı zamanda JavaFX Script içeren uygulamaları da çalıştırabilecek.

JavaFX Script ise JavaFX ailesinin temel taşı. Swing ,Java 2D ve Java 3D uygulamaları JavaFX Script ile daha da güçlenecek. (Sun is not replacing Swing with JavaFX; instead, JavaFX Script makes Swing much easier to use.) JavaFX Script ile gelen event oluşturma ve yürütme konusundaki iyileştirmelerden Swing uygulamaları da faydalanacak ve umuyoruz ki daha performanslı Swing uygulamaları göreceğiz. Şu anda JRE (Java RunTime Enviroment) ile JavaFX Script uygulamalarını masaüstünde çalıştırma imkanına sahibiz.

Öte yandan JavaFX ailesine zamanla farklı üyeler de katılacak. Sanırım SUN bu konuda yatırım yapmaya ve uzun süren uykusundan uyanmaya bu defa gerçekten kararlı. Yazının sonunda JavaFX Script ile hazırlanmış demolara ait linkleri bulabilirsiniz. Önceden gördüğünüz Silverlight veya WPF uygulamalarını aratmayacak kadar güzel örnekler var. Ama bu şekilde bir değerlendirmenin pek de sağlıklı olmayacağını düşünüyorum çünkü söz konusu olan görsellik olunca mutlaka tasarımcının zevki etkili oluyor. O nedenle bir kaç örneğe bakıp da bu teknoloji diğerinden daha iyidir deme şansımız yok.

Görsellik savaşları son sürat sürüyor. Uygulama geliştiriciler ve son kullanıcılar olarak şimdilik önümüze ne sunulacağını beklemekle meşgulüz. Belki de bir süre sonra bu kadar çok görsellik canımızı sıkcak ve gözümüz sadelik aramaya başlayacak. (Bkz )

Umarım SUN performans konusundaki vaatlerini yerine getirerek Microsoft ‘un yaptığı hataya düşmez (WPF uygulamalarının kullandığı sistem kaynağından bahsediyorum) ve JAVA kullanıcılarının görsellik konusundaki sıkıntılarını bitirir.

Hepimiz adına performans ve görselliÄŸin dengede olduÄŸu günler diliyorum. SaÄŸlıcakla kalın…

JavaFX
JavaFX FAQ
JavaFX for Swing Programmers

JavaFX Script JavaFXPad Demo
JavaFX Script Studiomoto Demo
JavaFX Script Tesla Demo
Konu ile ilgili düşündürücü bir yazı