<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Uygulama Yaşam Döngüsü Yönetimi Altyapısı için GelİŞlet (DevOps) Deneyimi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Ahsen İkbal Aytekin</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Yagup Macit</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Eray Tüzün</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>HAVELSAN Bilişim Hizmetleri Grup Müdürlüğü</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>HAVELSAN Teknoloji ve Akademi Direktörlüğü</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Ankara</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Türkiye</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: Uygulama yaşam döngüsü yönetimi, Hızlı Uygulama Geliştirme, Uygulama Değer Yönetimi</institution>
          ,
          <addr-line>Yazılım İşletimi, DevOps, GelİŞlet</addr-line>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2013</year>
      </pub-date>
      <fpage>349</fpage>
      <lpage>355</lpage>
      <abstract>
        <p>Özetçe. Günümüz şirketleri, müşterilerinin beklentilerini anlamak ve bu beklentilere hızlı ve doğru bir şekilde tepki vermek durumundadır. Artık, bilişim sistemleri karar destek sistemleri olmaktan çıkmış ve doğrudan yönetimin, üretimin, ticaretin ve sosyal hayatın yaşandığı sistemler haline gelmiştir. Hayatın kendisini beklemeye almak hayattan kopuş ile sonuçlanmaktadır. Uygulama yazılımları için hem ilk fikrin kullanıma verilmesi hem de var olan yazılım üzerinde değişiklik yapılması hızlı davranış yeteneği gerektirmektedir. Bu hız yeteneği, uygulamayı geliştirenler ile aynı uygulamayı işletenler arasındaki süreçsel ve organizasyonel mesafenin kısalması ile olanaklıdır. GelİŞlet (DevOps), geliştiriciler ve işleticilerin aynı çatı altında ve işbirliği içerisinde birlikte çalışarak kullanıcı ihtiyaçlarına hızlı tepki vermelerini sağlayan bir yaklaşım olarak tanımlanmaktadır. Bu çalışmada, sistem ve yazılım üreten ve kullanıcının bilişim profesyoneli olduğu büyük ölçekli bir organizasyonda Uygulama Yaşam Döngüsü Yönetimi altyapısının, GelİŞlet yaklaşımı ile işletilmesi, bakımı ve kazanımları anlatılmıştır.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>işbirliği içerisinde hızla karşılayabilmek ve değişim sonuçlarını izleyebilmek için UYY
altyapı hizmetinin verilmesinde GelİŞlet yaklaşımına geçilmiştir.</p>
      <p>Bildirinin ikinci bölümünde, GelİŞlet yaklaşımı hakkında bilgi verilmiştir. Üçüncü
bölümde, HAVELSAN UYY altyapısının Gelİşlet motivasyonu, izlenen yöntem ve
elde edilen sonuçlar alt başlıklar halinde anlatılmıştır. Son bölümde ise gerçekleştirilen
deneyim genel olarak özetlenerek, yapılan değerlendirmeler aktarılmıştır.
2.</p>
    </sec>
    <sec id="sec-2">
      <title>GelİŞlet</title>
      <p>GelİŞlet terimi, 2008 yılında “Development” ve “Operations” sözcüklerinin
bileşiminden oluşturulan DevOps [4] teriminden yola çıkılarak, “Geliştirme” ve
“İşletme” sözcüklerinden türetilmiştir. GelİŞlet yaklaşımı, Çevik geliştirme modelinin
evrimi ile vizyon, özellik, geliştirme, test, inşa, dağıtım, işletme, izleme, geri bildirim
konularını uçtan uca kapsayacak şekilde ürün sahibi, geliştiriciler, işletim birimleri ve
kullanıcılar arasındaki işbirliğini arttıran kültür olarak ortaya çıkmıştır[6]. Bu kültürün
işletim döngüsü Şekil 1’de görülmektedir.</p>
      <p>Şekil 1 - GelİŞlet yaklaşımı döngüsü [7]</p>
      <p>GelİŞlet döngüsü, planlama evresi ile başlamaktadır. Planlama evresinde, ürüne ait
özellikler ürün sahibi tarafından önceliklendirilerek tur planına dahil edilmekte ve
geliştirme faaliyetleri tetiklenmektedir [8]. Geliştirme evresinde, sürekli inşa pratiği ile
kod yazımı, inşa ve test zinciri korunmaktadır. Dağıtım evresinde, sürümün inşası
alınarak dağıtım gerçekleştirilmektedir. İşletim evresinde ise dağıtılan ürünün
işletilmesi ve izlenilmesi yapılmaktadır. İzleme sonuçlarına göre tekrar planlama
evresine geçilmektedir.
3.</p>
    </sec>
    <sec id="sec-3">
      <title>HAVELSAN Deneyimi</title>
      <p>HAVELSAN, 4 genel müdür yardımcılığı çatısı altında 800+ mühendis olmak üzere
1200 üzerinde çalışanı olan bir savunma sanayi şirketidir. Her yeni gelen proje ile
geliştirme ortamının ihtiyaçları sürekli farklılaşabilmektedir. Böyle bir dinamik yapıda,
projelerin ihtiyaçlarına hızlı bir şekilde cevap verebilmek ve çoğunluğu
mühendislerden oluşan iç müşterilerin memnuniyetlerini sağlayabilmek amacıyla,
Kurumsal UYY altyapısı [5] devreye alınmıştır.</p>
      <p>Geliştirilen Kurumsal UYY altyapısı ile yaklaşık 60 mühendislik grubuna destek
verilmektedir. Bu mühendislik grupları, genel müdür yardımcılıklarına bağlı değişen
büyüklüklerde (5 ila 60 kişi) takım ve takımların bağlı olduğu gruplardan oluşmaktadır.
Mühendislik grupları, herhangi bir zaman diliminde ortalama 50 aktif projenin
geliştirme etkinlerinden oluşan bir iş büyüklüğünü yürütmektedir. Bu altyapı sayesinde
mühendislik grupları farklı geliştirme metodolojileri uygulayabilmekte ve şelaleden,
çok fazlı modele ya da çevik yöntemlere geçebilmektedir. UYY altyapısı, İş Sürekliliği
Yönetim Sistemi (ISYS) kapsamında, özel bulut üzerinden, tüm geliştiricilere kesintisiz
olarak hizmet vermek gibi ek yükümlülüklere sahiptir. Bu gereksinimleri
karşılayabilmek amacıyla, UYY altyapı hizmetinin işletim ve bakımı için 2014 yılında
GelİŞlet kültürüne geçmesine karar verilmiştir. Altyapı hizmetinin GelİŞlet yaklaşımı
ile işletim ve bakımı, 5 kişilik bir ekip tarafından ikişer haftalık planlı sürüm çıkarma
şeklinde yapılmaktadır.</p>
      <p>Şekil 2 – HAVELSAN UYY altyapısının GelİŞlet döngüsü.</p>
      <p>UYY altyapı hizmeti, çeşitli kanallardan gelen girdiler ve ihtiyaçlara göre sürekli
iyileştirilmektedir. İhtiyaçların planlanması ve gerçekleştirilmesi sonucunda hizmetin
sürümü yükseltilerek canlı kullanıma alınmaktadır. Canlı sistem, sürekli izlenerek ve
kullanıcı geri dönüşleri alınarak sisteme tekrar girdi sağlanmaktadır. UYY altyapı
hizmetinin GelİŞlet döngüsü Şekil 2’de gösterilmektedir. Bu döngüdeki adımlar alt
başlıklarda ayrıntılı olarak aktarılmıştır.</p>
    </sec>
    <sec id="sec-4">
      <title>3.1. Planla</title>
      <p>UYY altyapısı, kullanıcı gruplarından, yardım masasından ve kurumsal vizyon
gibi kanallardan gelen girdilerle sürekli iyileştirilmektedir. Birinci kanal, mühendislik
grupları ile 15 günlük periyodlarla gerçekleştirilen kullanıcı görüşmeleridir. Bu
görüşmede mühendislik gruplarının temsilcileri ile ürünün değerlendirmesi yapılarak
istenilen özellikler ve geri bildirimler alınır. İkinci kanal, olarak Yardım Masası
talepleri kullanılmaktadır. Kullanıcılar bu platform üzerinden istekte bulunabilir ve
hata bildirimi yapabilirler. Üçüncü kanal ise ISYS, kurumsal vizyon ve endüstriyel
gelişim ihtiyaçların bu girdilere eklenmesi şeklindedir.</p>
      <p>GelİŞlet takımı zaman içerisinde değişen ortalama 6 kişiden oluşmakta ve 2
haftalık turlar ile çalışmaktadır. Bu turların planlama evresinde talep edilen özellikler
ve bildirilen hatalar, önceliklerine ve büyüklüğüne göre tur içerisinde gerçekleştirilmek
üzere seçilir. Seçilen ürün özellikleri, takım üyelerinin yapması gereken görevlere
kırılarak koşulacak olan tur hazır hale getirilir.</p>
    </sec>
    <sec id="sec-5">
      <title>3.2. Geliştir ve Yapılandır</title>
      <p>Bu aşamada, günlük kenetlenme toplantıları ile görevlerin üzerinden geçilerek her
takım üyesinin, diğer üyelerin yaptığı işler ve engellenen işler konusunda bilgilenmesi
sağlanmaktadır. Takım üyeleri, üzerlerine atanan görevleri çalışarak, geliştirdikleri
kodların birim testlerden geçtiğine emin olduktan sonra takım üyelerinden birine kod
gözden geçirme isteği gönderirler. Kod gözden geçirme işlemi, geliştiricinin kendisi
dışındaki bir başka göz tarafından aynı kodun incelenmesi olarak gerçekleştirilir.
Gözden geçirme yapan takım üyesi, kod üzerinde gözlemlediği eksiklikler, fazlalıklar
ve hatalı yazımlar için ilgili satırlara yorum girerek gözden geçirme isteğini geliştiriciye
geri gönderirler. Geliştirici, kod gözden geçirme isteği doğrultusunda kendisine iletilen
yorumlara göre düzeltmelerini gerçekleştirerek kodu kaynak kod deposuna iade eder.
Bu iade işlemi ile tetiklenen sürekli inşa, hatalı ve inşayı kıran bir kodun, kaynak kod
deposuna iadesini reddederek ilgili geliştiriciye düzeltilmek üzere geri gönderir. Bu
inşanın başarılı olması durumunda ise inşa sırasında çalışan kod kalite ölçüm aracının
(SonarQube) sunmuş olduğu çıktılar dikkate alınarak ek düzeltme faaliyetleri
gerçekleştirilir.</p>
    </sec>
    <sec id="sec-6">
      <title>3.3. Sına ve Konumlandır</title>
      <p>Başarılı olan sürekli inşa çıktıları, geliştirme ortamına otomatik olarak
yüklenmekte ve planlama aşamasında oluşturulan test görevleri ile çapraz-fonksiyonlu
takım üyeleri tarafından test edilmektedir. Kullanıcı testi olarak adlandırdığımız bu
testlerden başarısız olan geliştirmeler için hata açılarak aynı tur içerisinde düzeltme
faaliyeti yürütülmektedir. Başarılı olan geliştirmeler ise tur sonu teslimat kümesine
aday olarak girerler. 2 haftalık turun sonunda, tur gözden geçirme toplantısı
gerçekleştirilerek aday geliştirmelerden bitti tanımına (definition of done) uyanlar
etiketlenerek tur çıktısı belirlenir.</p>
      <p>Konfigürasyon yöneticisi tarafından etiketlenen kaynak kodlar üzerinden, test,
önüretim ve üretim ortamlarına dağıtım amacıyla sürüm inşası başlatılmaktadır. Sürüm
inşasına ait çıktılar Sürüm Yönetim Aracı (Microsoft Release Management) ile
dağıtılmak üzere konfigüre edilmektedir. Bu araç üzerinde, tanımlanan her bir ortam
için dağıtımı onaylamak ve dağıtımın başarısını doğrulamak üzere ilgili takım üyelerine
atamalar yapılmıştır. Dağıtım ortamı tek düze bir yapıya sahip olduğu için ayrıca bir
dağıtım konteyneri kullanımına gerek görülmemiştir. Sürüm inşası tetiklendiğinde,
etiketlenen kaynak kodların çıktısı üretilerek, test ortamı için dağıtım onayına sokulur
ve onay sonucunda test ortamına sürüm dağıtımı gerçekleştirilir. Sonrasında yapılan
testler ve doğrulama onayı ile dağıtımın ön-üretim ortamına otomatik olarak
aktarılması sağlanır. Benzer şekilde ön-üretim ortamında da başarı elde eden sürümün
canlı sisteme dağıtımı gerçekleştirilerek planlanmış olan tur çıktısı kullanıma verilir.
3.4. İzle ve Öğren</p>
      <p>UYY altyapı hizmeti, kurumsal ölçekte yürütülen ISYS kapsamında, süreklilik ve
kullanıcı memnuniyeti açısından izlenmektedir. Bu izlemenin parçası olarak, yardım
masasından elde edilen, geliştirilen talep sayısı ve memnuniyet anketi sonuçları, 2015
Ağustos ayından 2016 Haziran ayına kadar olan dönem için Tablo 1’de verilmiştir.</p>
      <p>Ağustos 2015</p>
      <p>Eylül 2015
Ekim 2015
Kasım 2015
Aralık 2015
Ocak 2016
Şubat 2016
Mart 2016
Nisan 2016
Mayıs 2016
Uygulama kullanım izleme aracı (PIWIK) üzerinden, UYY Altyapısı canlı sistemi
sürekli olarak izlenmektedir. Bu izleme ile sistem gözlemlenerek, yeni eklenen
özelliklerin kullanımı, mevcut ürün özelliklerinin kullanımındaki artış ve düşüşler,
uygulamaya bağlanılan tarayıcı türleri ve sürüm bilgileri izlenmekte ve
raporlanmaktadır. Yapılan izlemeler sonucunda yeni istenen özelliklerin
gerçekleştirimi, mevcut olanların değiştirilmesi veya kaldırılması için kararlar alınarak
ürün güncelleştirilmekledir. Bu güncelleştirme yaklaşımı ile son bir yılda 20 adet
dağıtım oluşturulmuş ve dağıtılmıştır.</p>
      <p>UYY Altyapısı ürün özelliklerinin 2015 Ağustos ayından 2016 Haziran dönemine
kadar geçen süreçte örün (web) istemcisi üzerinden gerçekleştirilen ziyaret sayıları
Şekil 3’te verilmiştir.</p>
      <p>ı
s
ı
y
a
S
t
e
r
a
y
i
Z</p>
      <p>Verilen tabloda, Backlog Görünümü ve Dashboard gibi yeni özelliklerin 2016_01
sürümü ile geldiği görülmektedir. Ayrıca, Kişisel Sorgular, Ortak sorgular ve Zaman
Çizelgesi gibi özelliklerin yoğun olarak kullanıldığı izlenebilmektedir. Özellikle
Zaman Çizelgesinin iniş ve çıkışları, kullanıcının ilgisinin izlenmesi için kritik bir
göstergedir. Test Yönetimi özelliklerinde kullanılan erişim aracı, örün tabanlı olmadığı
için Test Yönetimi erişiminin sınırlı olduğu görülmektedir. Doküman Görünümü ve
İzlenebilirlik özellikleri sadece gereksinim yöneticisi rolü ile ilişkili olduğu için diğer
geliştirme özelliklerine göre daha az erişim görülmektedir.</p>
      <p>Bu bilgiler bir sonraki tur planına girdi sağlayarak, kullanılmayan özellikler
kaldırılmakta, olağan dışı tespit edilen işlemler için analizler yapılmaktadır.
Kullanıcıların erişim sağladıkları tarayıcılara göre yapılan geliştirmeler kontrol
edilmekte ve gerekli durumlarda kullanıcıların tarayıcı güncellemelerinin merkezi
olarak gerçekleştirilmesi talep edilmektedir.</p>
      <p>Bu çalışmada Kurumsal UYY Altyapısı hizmetinin GelİŞlet modeli ile nasıl
yürütüldüğü aktarılmıştır. Kurumsal UYY altyapısı hizmeti 2012 yılında pilot projeler
ile başlamış, 2013 yılı Mayıs ayında işletime geçilerek mevcut projelerin bu altyapıya
geçişleri ile yaygınlaştırılmıştır. 2014 yılında geçilen GelİŞlet yaklaşımı ile ikişer
haftalık periyodlar halinde yaklaşık 60 tur planlaması gerçekleştirilmiş ve bu turlara ait
60 çıktı ile canlı sistem sürüm yükseltmesi yapılmıştır.</p>
      <p>GelİŞlet yaklaşımı sonrasında, kullanıcı gruplarının doğrudan ürün özelliklerinin
ve önceliklerinin belirlenmesi süreçlerine katılımları ile doğru üretim yapılması
sağlanmıştır. Talep edilen özelliklerin kullanıma verilmesi GelİŞlet yaklaşımı
öncesinde 2 ay sürerken bu yaklaşım sonrasında süre 3 haftaya indirilerek ihtiyacın
hızlı karşılanması sağlanmıştır.</p>
      <p>3 yıllık işletim süresince, planlı bakım faaliyetleri dışında hizmet yalnızca 1
günlük kesintiye uğramış, bu kesintinin nedeni olarak anti virüs yazılımının davranışı
tespit edilmiştir. Elde edilen sonuçlara göre, ürün üzerinde talep edilen özelliklerin
kullanıcılara hızlı bir şekilde sunulmasını sağlayan entegre GelİŞlet altyapısının
başarılı olduğu, memnuniyet anketlerinde görülmüştür.</p>
      <p>DevOps terimi için Türkçe karşılık taraması yapılmış ve karşılık bulunamayınca
GelİŞlet terimi türetilmiştir.</p>
      <p>Gelecek dönemde, ölçümlerin ve bu ölçümlere bağlı olarak yapılan değişikliklerin
daha etkili olabilmesi için metrik altyapısının geliştirilmesi planlanmaktadır.
Teşekkür. Yazarlar, HAVELSAN yönetimine çalışmaya verdiği destek için teşekkürler ederler.
5.</p>
      <p>Referanslar</p>
      <p>Documented</p>
      <p>Analysis: DevOps a</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          <source>[1] [2] [3] [4] [5] [6] [7]</source>
          [8]
          <string-name>
            <given-names>D.</given-names>
            <surname>Chappell</surname>
          </string-name>
          , «What is Application Lifecycle Management?,» Chappell &amp; Associates,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          <source>[Erişildi: 17 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          <string-name>
            <given-names>D.</given-names>
            <surname>West</surname>
          </string-name>
          , «
          <article-title>The Time Is Right For ALM 2</article-title>
          .0+,» Forrester Research,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          <string-name>
            <surname>Debois</surname>
          </string-name>
          , Patrick, «Agile 2008 Information, Toronto,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          <string-name>
            <surname>Toronto</surname>
          </string-name>
          ,» Just Enough Ken Schwaber, Jeff Sutherland, «The Scrum Guide,»
          <year>Temmuz 2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [Çevrimiçi]. Available: http://www.scrumguides.org/.
          <source>[Erişildi: 17 Haziran</source>
          <year>2016</year>
          ].
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>