hayal et, tasarla, hayata geçir



Çevre Faktörü

Yazılım projelerinin en önemli süreci tabi ki geliştirme aşamasıdır. Uygulama yazılır, yazıldıkça açıklar kapanır ve kapsam dökümanında olan istekler yavaş yavaş azalır. Fakat her ne kadar kusursuz uygulama yazıldığı düşünülse de projede hataların veya beklenmedik etkilerin ortaya çıkması kaçınılmazdır.

Sunucuya Attık Patladı

Olmadık bir yerde yanlış veriler güncellenmekte, müşteri uygulamanın istenileni sağlamadığını söylemekte veya her şey local ortamda düzgün çalışırken yapılan deployment sonucunda uygulamanın bir çok yerinde hatalar belirmektedir.

Yazılım uygulamalarının etkilendiği faktörler çok fazladır ve yazılımcılar tarafından hepsinin tahmin edilmesi imkansızdır. Dolayısıyla hataları öngörebilmek için doğru şartların sağlanmış olması gerekir. Bu da uygulamanın doğru şekilde ve doğru sayıda sunucuya farklı amaçlara yönelik bir şekilde dağıtılması ile sağlanır. Bu yazımızda bir uygulamanın kaç farklı ortamda kurulabileceğini inceleyeceğiz.


- Development Environment

Projenin geliştirilmeye başlandığı ve kaç adet arayüz veya uygulama yazılımcısı varsa o kadar sayıda kurulan ortamdır. Her yazılımcı kendi makinasında diğerlerinin kodlarını etkilemeden çalışarak paralel uygulama geliştirmenin gerekli koşullarını sağlar. Bu ortam üzerinde her kademede ve tecrübede kişi çalışabilir.

- Integration (Testing / Main) Environement

Projenin istenilen seviyeye gelmesinin ardından kodların derlenerek birleştirildiği ya da bir diğer deyişle entegre edildiği ortamdır. Bu ortamda, yapılan tüm geliştirmeler kalite analistleri (Quality Analyst) tarafından test edilmeye başlanır ve bulunan hatalar yazılımcılara raporlanarak, development ortamında çözümlerin geliştirilmesi sağlanır. Kod yeterli stabiliteye ve performansa ulaşıncaya dek bu döngü devam eder.

- User Acceptance Test (UAT) Environment

Son kullanıcıların ve müşterilerin kabul testlerini gerçekleştirdiği ortamdır. Burada yazılımın yeterliliği ve istenilenleri karşılayıp karşılamadığı müşteri tarafından belirlenir. UAT için ayrı bir test ortamı kurmak yerine entegrasyon sisteminin müşteriye açılması yanlış bir karardır. Kalite kontrolden geçmemiş bir release versiyonu müşterinin görebileceği bir yerde bulundurmak profesyonel bir tercih değildir. Ayrıca test sırasında QA’ler tarafından veriler değiştirilebilir ve müşteri tarafında dataların tutarlı olmadığı hissiyatı oluşabilir. Başka bir senaryoda ise test ortamında güvenlik gerekçesi ile her türlü veri atılamayabilirken son kullanıcı sistemi bu verilerle test etmek isteyebilir. Sonuç olarak bu iki sistemin birbirlerinden ayrılması doğru bir adımdır. Müşteri tarafından görülecek ilk ekran burası olduğundan hatalar entegrasyon ortamında mümkün olduğunca aza indirilmelidir.

- Staging (Pre-Production) Environment

Bu ortam production ile yazılımcılar arasındaki son duraktır ve canlı sistem ile aynı veya birebir kopyası olan bir sistem altında kurulu olması gereklidir. Burada donanım veya lokasyondan kaynaklı doğacak hataların önüne geçilmesi planlanır. Test sunucuları ile canlı ortamın sunucularının farklı ülkelerde olduğu bir senaryoda culture veya tarih sorunları baş gösterebilirken, test ekibi bu ortamda son testlerini yaparak bu gibi açıkları bulmaya çalışırlar. Bu ortamın kurulması sırasında benzer bir makinaya mı yoksa aynı makina üzerine mi kurulum yapılacağının kararının verilmesidir. Canlı sunucunun donanımsal olarak bir kopyasını oluşturmak maliyeti arttırırken, aynı sunucu üzerinde kurmak ise performansı düşürebilir.

- Production (Live) Environment

Uygulamanın var oluş sebebi bu ortam olduğundan fazla söze gerek yoktur. Tabi tüm yapılan testler burada hata kalmadığı anlamına gelmez ve bu aşamadaki bir uygulamada çıkan hataların çözülmesi artık daha zordur. Dolayısıyla projenin doğru bir şekilde test edilmesi ve canlı ortamdan minimum zarar ile dönülmesi tüm bu süreçlerin doğru yönetilmesine bağlıdır.


Bu ortamların kurulum zamanları ise projenin durumuna göre belirlenir. Her bir kilometre taşı ile birlikte yeni bir ortam kurulması aşağıdaki süreçlerle genelde paraleldir;

Ortam Süreç
Development Development
Integration Alfa Test
UAT Beta Test
Staging Release Candidate / Release
Production Release Candidate / Release

Tabi ki her projede tüm bu ortamların kurulması zorunlu değildir. Küçük çaplı uygulamalarda sadece 2 adet environment bile yeterli olabilir. Hangi ortamların gerekli olduğuna proje yöneticisi, release yöneticisi veya projedeki tecrübeli yazılımcılardan biri karar verebilir.



Yanıtla



SON YAZILARIM

genel
Microsoft Türkiye Açık Akademi

Microsoft tarafından Türkiye'deki ilk ücretsiz online yazılım okulu Açık Akademi açıldı....

genel
Windows Azure Blob Arayüzü

Bir önceki yazımızda Blob servisine kısa bir giriş yapmıştık. Yazıyı okumak isterseniz

genel
Windows Azure Blob Servisi

Microsoft'un bulut mimarisi Windows Azure platformu üzerinde veri altyapısı alışıla gelmiş yöntemlerden...