12 Temmuz 2007 Perşembe

Adobe Integrated Runtime (AIR) duyuruldu.

İşletim sistemi-bağımsız uygulama geliştirme kulvarına, bambaşka bir yaklaşımla dahil olan Adobe, bu amaçla AIR'in ilk sürümünü duyurdu.

Adobe Integrated Runtime (AIR), eski adıyla 'Apollo', işletim sistemi-bağımsız uygulama geliştirme sektörüne yep yeni bir yaklaşım kazandırmış oldu. Java ve .NET gibi benzer teknolojiler, herhangi bir ortamda (Örn: masaüstü, web, mobil vs) kullanılmak üzere hazırlanmış bir altyapının, diğer ortamlarda kullanılmasına olanak sağlamaktadırlar. AIR'in farkı ise; web için hazırlanmış bir yazılımın ve arayüzün, masaüstünde kullanılmasına olanak sağlaması... Javascript, AJAX, HTML, CSS... kullanılarak hazırlanmış her türlü yazılım, masaüstünde kullanılabilir. Üstelik, işletim sistemi bağımsız; Linux, Mac, Windows...

Eskiden, yazılımların masaüstü sürümlerine alternatif olarak web tabanlı sürümleri duyurulurdu. Günümüzde, bu yaklaşım tam tersine dönmüştür. Yazılımlar tamamıyla web tabanlı olarak oluşturulmaktalar; Google Docs, web tabanlı Outlook, Google SpreadSheet, çevrimiçi topluluk yazılımları, Workcube... Bu durum, masaüstü yazılımların tahtının sallandığının en belirgin göstergesi durumundalar. Kurulumsuz kullanımın ve her yerden erişimin en güzel yöntemi durumunda olan Web'in önemli bir avantajı daha vardır; taşınabilir cihazlardan kullanım... Günümüzde, Web için hazırlanmış bir yazılımın, taşınabilir cihazlara adapte edilmesi çok kolaylaşmıştır. Bu durum göz önüne alındığında, platform-bağımsız uygulama geliştirme amacına ulaşmak için en makul yöntemin Web tabanlı teknolojiler olduğu sonucuna varılabilir. Adobe bunun farkına vardığı için olsa gerek, AIR'e benzer teknolojilerin (Java, .NET...) vaadettiği platform-bağımsızlık konusunda çığırtkanlık yapmaya gerek duymuyor.

AIR hakkında daha fazla bilgi için, Adobe Labs: http://labs.adobe.com/technologies/air/

23 Haziran 2007 Cumartesi

SATA - SCSI (Düzeltme: NOD32)

Artık sunucu makinelerde de SATA diskler kullanılmaya başlandı. SATA disk içeren bir makine kullandık. Tecrübemizi paylaşıyoruz.

Makine:

Anakart: Intel S5000VCL
RAID Controller: Intel Embedded Server RAID Technology II
Bellek: 3GB
İşlemci: Intel Xeon 5140@2.33 Ghz
Fiziksel İşlemci Sayısı: 2
Mantıksal İşlemci Sayısı: 4
İşletim Sistemi: Windows 2003 R2 SP2

Production ortamında çalışmakta olan sunucunun işlemci ve bellek kaynakları ortalama olarak %50 oranında kullanılıyor. Bu durumdaki sunucuda C:'den D:'ye 2GB'lik bir log dosyasını taşımaya çalıştığınızda, sunucu kilitleniyor. IIS hizmet vermeyi durduruyor. Benzer işlemleri, yine "yakın" özelliklere sahip ve aynı yük altındaki HP DL380 tipi sunucuda yaptığımızda, herhangi bir yavaşlık veya kesinti söz konusu olmamaktaydı. HP DL380'ler SCSI disk kullanmaktadır.

Sorun çıkartan makine test ortamındayken, aynı işlemi çok hızlı ve aksamasız bir şekilde yapmaktadır.

Sonuç:

Bu tecrübeden şu sonucu çıkartmaktayız; SATA diskler, yalnızca okuma (disk read) yapıldığında, SCSI disklere yakın performans sergilemektedirler. Fakat, okuma ile birlikte yoğun yazma (disk write) işlemleri yapıldığında, performans sorunları yaşatmaktadır. RAID kullanarak performans artırımı sağlanabilir.

Önemli Not: Makalede bahsedilen sorunların nedeninin, SATA diskler olmadığı, sunucu üzerinde çalışmakta olan NOD32 anti virüs sisteminin, sorunlara neden olduğu gözlemlenmiştir. Ek olarak, söz konusu antivirüs sisteminin, bazı IIS loglarını truva atı olarak işaretlediği ve karantinaya aldığı da gözlemlenmiştir. Sonuç: SATA disklerle ilgili bir sorun yok. Bilgilerinize ve değerlendirmelerinize sunarız.

21 Haziran 2007 Perşembe

Bilgi sorumluluktur

Bilmek sorumluluktur; hem iş dünyasında, hem hukukta hem de islamda. Bu yazı, bilmek ve sorumluluk almak üzerine bir değerlendirmedir.

İster dini açıdan bakılsın ister hukukî açıdan, durum aynıdır; bilmek sorumluluktur. Örneğin; suçlunun kim olduğunu bildiği halde gizleyen bir kişi, hukuken suç işlemiş olur. İslamda da aynı şey geçerlidir; suçlunun açıklanması farzdır. İş dünyasına uyarlandığında... Ne kadar bilgiliyseniz, sorun çözme yeterliliğiniz o kadar fazladır. Bu şu anlama gelir; her sorun anında size o kadar fazla iş düşecektir. Bu türlü "sorun çözme" işleri, adil ve makul bir şekilde yargılandığında, üretime yapılan gizli ve önemli katkılardır. Tespit edilmesi ve değer biçilmesi zor katkılar.

Başka bir açıdan bakıldığında; fertlerin 'ben duymadım, bilmiyordum' bahaneleri kalmasın diye Resmî Gazeteler yayımlanır. İslamda ise Kur'an-ı Kerim benzer bir işlev görür. İş dünyasına uyarlandığında ise... Dökümantasyonlar tech spec'ler vs vardır. 'Duymadım', 'bilmiyordum' sözleri bahane değildir. Okunmalı. Bilinmeli. Sorumluluk alınmalı.

20 Haziran 2007 Çarşamba

ColdFusion: 'Connection reset by peer: socket write error'

Uygulamanıza bir tane sunucu yeterli geliyorsa, teknik ekibin yalnızca kodlama, veritabanı vs gibi klasik konuları bilmesi yeterli olabilir. Fakat eğer birkaç sunucu kullanarak kümeleme/cluster yöntemiyle vs çalışılıyorsa durum değişir. Teknik ekip, temel ağ bilgilerine vakıf olmalıdır. Makale, yaşanmış bir örnek üzerinden bu tezi savunur.

ColdFusion kodu, diğer makinedeki veritabanı sunucusuyla iletişim kurarken, ağ mekanizmasında bir aksama yaşanırsa, ColdFusion aşağıdaki hata mesajını göstermeye başlar:

Connection reset by peer: socket write error

Hata mesajındaki "socket" kelimesinden de anlaşılacağı üzere, bu bir ağ sorunudur. Ağı oluşturan tüm bileşenler kontrol edilmelidir;

  • Kablolar/jag'lar
  • Switch'ler/Hub'lar
  • Ağ kartları (ethernet card)
  • ...
Sorunu tecrübe etmek için, ColdFusion ile veritabanı makinesi arasındaki kabloyu birkaç saniyeliğine çıkartın ve tekrar takın. Bahsi geçen hata mesajı belirmeye başlayacaktır.

13 Haziran 2007 Çarşamba

.NET uygulamasını kontrol altına alma (Application Pool)

Sunucuda birçok .NET uygulaması ve site çalışıyor. Uygulamalardan biri hack'lendiğinde, diğerleri etkilenmemeli. Sunucu kaynakları (işlemci, bellek vs), uygulamalar arasında adil ve garantili bir şekilde paylaştırılmalıdır. Makale, .NET'in bu konudaki özelliklerinden kısaca bahsedecektir.


.NET uygulamaları (.NET Application) varsayılan olarak NETWORK_SERVICE kullanıcısı üzerinden çalışırlar. Bu kullanıcı, sistemde birçok önemli yetkiye sahiptir. Dolayısıyla, aşağıdaki riskleri beraberinde getirirler;

• Kötü niyetli bir geliştirici, yazdığı bir .NET koduyla, sistem kontrolünü ele geçirebilir.
• Birkaç basit form içeren bir .NET uygulaması hack’lendiğinde, saldırgan tüm sistemi ele geçirmiş olacaktır.
• Performans sorunları olan bir uygulama, sunucunun işlemci ve bellek kaynaklarının tamamını tüketecektir.

Olması gereken yapı ise şu şekildedir;

• Uygulama hack’lense bile, yalnızca o uygulama çökmelidir.
• Performans sorunları olan bir uygulamanın yalnızca kendisi yavaşlamalıdır. Diğer uygulamalar etkilenmemelidir. Herkes kendi kaynaklarını kesintisiz kullanabilmelidir.

Özetle; her koyun kendi bacağından asılmalıdır. Bunu sağlamak .NET’te Uygulama Havuzları (Application Pool) kullanılabilir. Her uygulama için bir Uygulama Havuzu oluşturulur. Hangi havuzun sistem kaynaklarının ne kadarını kullanabileceği ayarlanır.

Bir .NET uygulasının hareket kabiliyetini sınırlamak için aşağıdaki işlemler yapılabilir;

  • Uygulama için yeni bir Windows kullanıcısı oluşturulur.
  • Yeni kullanıcı, Users grubundan çıkartılır IIS_WPG grubuna eklenir.
  • Uygulama için yeni bir Uygulama Havuzu oluşturulur.
  • Uygulama Havuzunun Identity ayarı değiştirilir yeni kullanıcı üzerinden çalışması sağlanır.
  • Uygulamanın yeni Uygulama Havuzunu kullanması sağlanır.
  • Uygulamanın çalıştığı klasörlere kullanıcı için yeterli ve gerekli izinler verilir.
  • Windows TEMP klasörüne (Örn: C:\WINDOWS\Temp), IIS_WPG grubu için veya yeni kullanıcı için yazma yetkisi verilir.
  • Registry'de gerekli tüm dallara yazma yetkisi verin.

Makalede anlatılan türde sınırlamalar yapıldığında;

• Uygulamayı hack’leyen bir saldırgan, sistem genelini etkileyemez. Yalnızca uygulamanın kendi kaynaklarını tüketir. Yalnızca o uygulama çöker.
• Yazılan kötü ve performanssız kodlardan dolayı, sistem geneli etkilenmez.
• Özetle; Sistem Yöneticisinin içi rahat eder. İçi rahat etmesi gereken kişi Sistem Yöneticisi olduğundan, bu yazıda anlatılan türdeki tüm kuralları ve yapılandırma standartlarını Sistem Yöneticisi koyar ve uygulatır.