=Paper= {{Paper |id=Vol-1721/UYMS16-CYYG_paper_2 |storemode=property |title=Uygulama Yasam Dongusu Yonetimi Altyapisi icin GelISlet (DevOps) Deneyimi |pdfUrl=https://ceur-ws.org/Vol-1721/UYMS16-CYYG_paper_2.pdf |volume=Vol-1721 |authors=Ahsen Ikbal Aytekin,Yagup Macit,Eray Tuzun |dblpUrl=https://dblp.org/rec/conf/uyms/AytekinMT16 }} ==Uygulama Yasam Dongusu Yonetimi Altyapisi icin GelISlet (DevOps) Deneyimi== https://ceur-ws.org/Vol-1721/UYMS16-CYYG_paper_2.pdf
       Uygulama Yaşam Döngüsü Yönetimi Altyapısı için
               GelİŞlet (DevOps) Deneyimi

                Ahsen İkbal Aytekin1, Yagup Macit1, Eray Tüzün2
                HAVELSAN Bilişim Hizmetleri Grup Müdürlüğü
                    1
       2 HAVELSAN Teknoloji ve Akademi Direktörlüğü 06510 Ankara, Türkiye



       Ö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.
       Anahtar Kelimeler: Uygulama yaşam döngüsü yönetimi, Hızlı Uygulama
       Geliştirme, Uygulama Değer Yönetimi, Yazılım İşletimi, DevOps, GelİŞlet

1. Giriş
   Günümüzde şirketler, ister yazılımları kendileri geliştirsin ister platform olarak
tedarik etsin, işletim esnasında kullanıcıların gündelik pratiklerini takip etmek ve onlara
daha etkili yazılımlar sağlamak istemektedirler. Yazılım uygulamalarında, fikrin ilk
çıkışından başlamak üzere geliştirme, test, dağıtım ve bakım süreçlerinin tamamı
Uygulama Yaşam Döngüsü Yönetimi (UYY) olarak tanımlanmaktadır [1].
   İlk UYY çözümlemeleri, yaşam döngüsü aktivitelerinin ayrı yürütüldüğü farklı
araçların entegrasyonundan oluşmaktadır. UYY 2.0 yaklaşımında, yazılım geliştirme
süreçlerinin bütünleşik olduğu araçlar çözüm olarak sunulmaktadır. UYY 2.0 ile gelen
tümleşik ortam üzerinde yinelemeli geliştirme ve sürekli inşa gibi yeni deneyimler elde
edilmiş ve Çevik Bildiri [2] ile anlayış değişikliği vurgulanmıştır. Çevik pratiklerin ilgi
görmesi ve bu alandaki gereksinimlerin artması sonucunda UYY 2.0+ [3] ile planlama,
işbirliği ve sürüm dağıtımının da kapsandığı yaklaşıma geçilmiştir. Yazılımı işleten ve
kullanan birimlerin de sürece eklenmesi sonucunda, aktiviteleri uçtan uca kapsayan,
genişletilmiş UYY denilebilecek GelİŞlet [4] yaklaşımı ortaya çıkmıştır.
   HAVELSAN, yüklenicisi olduğu projelerin yazılım ve sistem çalışmalarını
gerçekleştirmek için ihtiyaç duyduğu ortak araçlardan oluşan altyapı hizmetini UYY
2.0+ uyumlu özel bulut şeklinde merkezileştirmiştir [5]. Altyapı hizmet sunumunda
süreçler, geliştirme yöntemleri, takım yapıları ve işbirliği konularında proje ve gruplara
göre farklılaşan ihtiyaçlar ortaya çıkmıştır. Kısa zamanda değişebilen bu ihtiyaçları,




                                              349
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.
   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. GelİŞlet
      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.




                         Şekil 1 - GelİŞlet yaklaşımı döngüsü [7]
   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. HAVELSAN Deneyimi
    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.
    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




                                            350
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.




             Şekil 2 – HAVELSAN UYY altyapısının GelİŞlet döngüsü.
   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




                                          351
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.

3.1. Planla
        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.
        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.

3.2. Geliştir ve Yapılandır
      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.

3.3. Sına ve Konumlandır
      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ı




                                            352
gerçekleştirilerek aday geliştirmelerden bitti tanımına (definition of done) uyanlar
etiketlenerek tur çıktısı belirlenir.
      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
   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.

                              Geliştirme Sayısı         Müşteri Memnuniyeti
      Ağustos 2015                     2                         5,0
       Eylül 2015                     18                         4,5
       Ekim 2015                       8                        4,67
      Kasım 2015                      12                        4,67
      Aralık 2015                     20                        4,83
       Ocak 2016                      19                         4,8
       Şubat 2016                     14                        3,67
       Mart 2016                      13                        4,67
       Nisan 2016                     15                        NA
       Mayıs 2016                      8                          5
       Tablo 1- UYY hizmeti için aylık bazlı geliştirme sayısı ve memnuniyeti

      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.




                                          353
  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.

                                     3500
                                     3000
   Ziyaret Sayısı




                                     2500
                                     2000
                                     1500
                                     1000
                                      500
                                        0
                                            2015 2015 2015 2015 2015 2016 2016 2016 2016 2016
                                             _08 _09 _10 _11 _12 _01 _02 _03 _04 _05
                    Arama sonuçları               21   55    8   15   96   195 213 374 263
                    Backlog Görünümü                                        48    131   176   130   56
                    Bana atanmış            10    133   224    89    206    19    85    112   205   174
                    Dashboard                                               9     21    17    25    14
                    Diğer                         140    89          360          177   77    441
                    Doküman Görünümü         2     7     8     1     17     7     33    20    22    37
                    İnşa Yönetimi           20    254   106    49    23     1
                    Kişisel Sorgular        64    779   773    277   937    199   532   824   425   675
                    Numaralandırma                                          4     24    3     14    2
                    Ortak Sorgular          115   925   1231   490   854    134   281   665   935   849
                    Tarih Bazlı Sorgu        6    65    157    48    172    27    88    62    70    30
                    Temel Çizgi             10    112   112    34    167    57    172   129   215   122
                    Test Yönetimi            6           8           20     17    18    12    12    4
                    Zaman Çizelgesi         328   2015 2739    726   3137   545   1451 1706 1544 1259
                    İzlenebilirlik           1     4     5     8      4     5     12    8     6     3
                    Kaynak Kod              18    613   464    449   592    345   864   866   715   294


                                Şekil 3 - UYY ürün özelliklerinin ziyaret sayısı
   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.
   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.




                                                         354
4. Sonuç
      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.
      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.
      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.
      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.
      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. Referanslar

   [1]   D. Chappell, «What is Application Lifecycle Management?,» Chappell &
      Associates, 2008.
   [2] «Agile Manifesto,» [Çevrimiçi]. Available: http://www.agilemanifesto.org/.
      [Erişildi: 17 Haziran 2016].
   [3] D. West, «The Time Is Right For ALM 2.0+,» Forrester Research, 2010.
   [4] Debois, Patrick, «Agile 2008 Toronto,» Just Enough Documented
      Information, Toronto, 2015.
   [5] Y.Macit, E.Tüzün, K.Ince, A.I.Aytekin, «Büyük Ölçekli Bir Organizasyonda
      Uygulama Yaşam Döngüsü Yönetimi Uygulama Deneyimi,» Proceedings of
      the 8th Turkish National Software Engineering Symposium, 2014.
   [6] «Emerging Technology Analysis: DevOps a Culture Shift, Not a
      Technology,» Gartner, 2013.
   [7] «Collabnet Web Sitesi,» 17 Haziran 2016. [Çevrimiçi]. Available:
      http://www.collabnet.cn/products/teamforge/deploy.
   [8] Ken Schwaber, Jeff Sutherland, «The Scrum Guide,» Temmuz 2013.
      [Çevrimiçi]. Available: http://www.scrumguides.org/. [Erişildi: 17 Haziran
      2016].




                                           355