25 Şubat 2015 Çarşamba

Team Foundation Server - Giriş

     Merhaba arkadaşlar, sizlere on hafta boyunca Team Foundation Server'dan bahsedeceğim. Team Foundation Server (TFS) konusuna başlamadan önce Application Lifecycle Management (ALM)'tan biraz bahsetmek gerekiyor. Çünkü TFS de bir ALM aracıdır.

      ALM Nedir ?
      Bir uygulamanın geliştirilmesi, büyümesi, geliştirdikten sonra müşteriden gelen feedbacklere göre daha da farklılaştırılması ve yaşamını daha uzun süre devam ettirilmesi için bakımı yapılması gerekir. Bahsedilen bu işler için devamlılık arz eden bir sürece ihtiyaç vardır. ALM bunu karşılayan bir konsepttir. Aslında buradaki asıl amaç yazılım kalitesinin arttırılması ve maliyetlerin düşürülme çabasıdır.[1]

Şekil 1 : Application Lifecycle Management[1]

      Şekil 1'de görüldüğü üzere ALM içerisinde önemli yapı taşlarını barındırmaktadır. Örneğin; taleplerin yönetilmesi, ürünün yazılımsal anlamda mimarisinin çıkarılması, tasarlanması, kodlanması, test edilmesi, yaşayan süreçlerin incelenmesi, incelenme sonucunda ürünün iyileştirilmesi, bu iyileştirmeler sonucunda da yeni versiyonların çıkarılması gibi bu tarz kavramların yönetilmesini kolaylaştıran metodojilere sahiptir.[1]

     Şekil 2'de görüldüğü gibi ALM üç ayrı bölüme ayrılabilir;

Şekil 2: Application Lifecycle Management Süreci[1]

     Application Lifecycle Management aslında bir fikirle başlar. Örneğin şu uygulamayı neden yapmıyoruz? gibi ve daha sonra uygulama oluşturulur. Sonraki olay uygulamanın üretime girdiği dağıtım aşamasıdır. En sonunda da uygulamanın iş değerinin kalmadığı tespiti edilir ve uygulama yaşam sonuna ulaşır. Dolayısıyla da hizmetten çıkarılır.[1]

     Team Foundatin Server’a Genel Bakış
     Team Fondation Server (TFS); farklı disiplinler gerektiren Yazılım, Test, Destek, Proje Yönetimi gibi tüm yazılım süreçlerinde kullanılmak üzere tasarlanmış, Microsoft’un geliştirmiş olduğu yazılım süreç yönetimi uygulamasıdır. Team Foundation Server’ın ilk amacı, takım içerisindeki işbirliğini arttırarak ürün gelişimini kolaylaştırmak ve verimlilik sağlamaktır.[2]

     Genel olarak TFS, kurumsal projeler için tasarlanmıştır. Takım içerisindeki iletişimi ve buna bağlı olarak verimi arttırmayı hedeflemiştir. İş durumunu izleme, takım rollerini yönetme, iş süreçlerini çıkartma ve sunduğu bir çok araçla proje yönetimini kolaylaştırmada etkin rol oynar.[3]

     Team Foundation Server’ın Sunduğu Özellikler
     Team Foundation Server, küçük projelerden tutun yüzlerce yazılım uzmanının yer aldığı çok geniş projelere kadar yazılım geliştirme sırasında ihtiyaç duyulacak bir çok alt sistemi bünyesinde barındırır.[2] Bu alt sistemlerin entegre olarak çalışması sayesine izlenebilirlik imkânı çok artar ve parça parça küçük araçların bir araya getirilmesi ile oluşan bir sisteme göre çok daha fazla katma değer üretir.[4] TFS'nin sunduğu özellikler şekil 3'te görülmektedir, bu özellikleri sonraki yazılarımda ayrıntılı olarak ele alacağım.

Şekil 3: Team Foundation Server'ın Sunduğu Servisler[5]
     Team Foundation Server Mimari Yapı
 

Şekil 4: Team Foundation Server Mimari Yapı[2]

     TFS'nin mimari yapısı şekil 4'te görülmektedir. Bunları tek tek açıklamak gerekirse;
     Client Layer
     Uygulama katmanının sunduğu web servislerini kullanarak sahip olduğu arayüz ile kullanıcıdan gelen isteklere cevap verir. TFS'e erişim sağlayarak kullanıcı ile etkileşim sağlayan herhangi bir uygulama TFS'nin client katmanı olarak gruplandırılabilir. Yaygın olarak kullanılan araçlar Visual Studio Team Suite, Team Explorer, Microsoft Office, Web Access ve diğer bir çok uygulama sayılabilir.[3]

     Application Layer
     TFS; Service oriented bir mimariye sahiptir. Temel uygulamalar için oldukça geniş bir servis seti sunmaktadır. Build, Services, VersionControl, Warehouse, WorkItemTracking gibi bir çok web service kütüphanesini barındırmaktadır.[3] Team Explorer gibi client uygulamaları bu katmanın servislerinden yararlanarak istemcilere hizmet verir. Bir Team Foundation Server Proxy kurulu olduğu durumda istemci katmanı proxy sunucusuyla konuşur. Proxy sunucusu, farklı coğrafi yerleşim alanlarında yer alan ekiplerin Team Foundation Server kaynaklarına erişimi için kullanılmaktadır. Ayrıca build işlemini gerçekleştiren bilgisayarlarda uygulama katmanı servisleri ile konuşmaktadır.[6]

     Data Layer
     TFS, Sql Server üzerinde dosya ve bilgileri depolamaktadır. Bu sayede Transaction yönetimi ve bilgilerin yedeklenebilmesi gibi güçlü özellikler sunmaktadır. Ayrıca Sql Server Reporting Service aracılığı ile basit raporlardan çeşitli veri madenciliği tekniklerinin uygulanıp proje yönetiminde kullanılmak üzere karmaşık analizler yapılabilmesine olanak sağlar.[3]
    TFS client tarafının doğrudan veritabanına bağlanmasına izin vermez.Bunun için database işlemlerini data layer da gerçekleştirir.Client bir işlemi gerçekleştireceği zaman application katmanındaki web servisler aracılığıyla data katmanından veriyi alıp o şekilde işlemi gerçekleştirir.[2]

    Team Foundation Server Yapılandırma Seçenekleri
    Team Foundation Server, gereksinimler doğrultusunda single-server ve dual-server olarak kurulabilmektedir.

    Single-server olarak kurulan Team Foundation Server konfigürasyonunda, kurulumun gerçekleştirildiği makina üzerinde hem uygulama katmanı, hemde veri katmanı yer alır. Bu konfigürasyon bir çalışma grubu veya alan adına dahil olabilir ve daha çok, 100 kişilik (500 kullanıcıya kadar destekler) kullanıcı sayısını aşmayan projeler için tasarlanmıştır.[6] Single Server mimarisi şekil 5'te görülmektedir.

Şekil 5: Single Server Topology[7]

     Dual-server kurulumunda ise, bir domain üzerinde yer alan en az iki makina üzerinde kurulum gerçekleştirilir. İlk makina uygulama katmanında yer alan servisleri barındırır, ikinci makina ise veri katmanı için SQL Server’i içerir. Bu konfigürasyon bir alan adına dahil edilmelidir ve sayıları 100’ü aşan (2.000 kullanıcıya kadar destekler) kullanıcı grupları ve çoklu projeler için tasarlanmıştır.[6] Dual Server mimarisi şekil 6'te görülmektedir.
Şekil 6: Dual Server Topology[7]
      Yazımın ilk bölümünde Team Foundation Server’ı kısaca tanıtmaya çalıştım. İlerleyen haftalarda sizlere bahsedeceğim konu başlıkları:
  1. Team Foundation Server Kurulum
  2. Team Foundation Server ile Proje Oluşturma
  3. Folder, Branch ve Label Oluşturma
  4. Check-in, Check-out Yapımı
  5.  Merge Kullanımı ve Kod Karşılaştırma
  6. Conflict Türleri ve Çözümleri
  7. Work Item (İş Öğesi)
  8. Work Item Sorgulama 
  9.  Team Foundation Build

     Bir sonraki yazımda buluşmak üzere, okuduğunuz için teşekkürler.