Hürriyet’te “On Air!” — Kamera Arkası

Herkese merhaba,

Oldum olası kamera arkası hikayelerini çok severim. Hayranlıkla izlediğim bir filmin çekim aşamasında, sahne aralarında, kulislerde geçen sohbetleri, kullanılan teknik ve teknolojileri izlemekten müthiş keyif duyuyorum. Bazen kendimi o insanların yerine koyuyor, o mekanın bir köşesine yerleştiriyor ve o anı yaşamaya çalışıyorum. “Sinema” denilen sanata tabii ki bir izleyiciyim. Bununla birlikte bizim işimizin de bir sanat olduğu konusunda ortaya konan savlara inancım oldukça güçlü. Bizler de bir prodüksiyon ortaya koyuyoruz, çizimler yapıyor, senaryolar yazıyoruz. Bunları da ete kemiğe büründürüp ziyaretçilerimizle buluşturuyoruz. Peki, bizim hayatımızın kamera — monitör — arkasında — önünde — neler oluyor? Merak eden sevgili dostlar için kısaca aktarmak istedim. Bu hikayenin bir senaryosu yok, umarım bir noktaya bağlayabilirim :)

Godfather 3'ün kamera arkasından bir görünüm

Sevgili dostum Mehmet Ali Erdin, geçtiğimiz günlerde teknik ve doyurucu bir yazı ile Hürriyet’in yayına çıkış süreçlerini özetledi. DevOps, Continuous Integration (CI), Continuous Delivery (CD) gibi kavramlar; TeamCity, Octopus, Bitbucket gibi araçlar hayatımıza gireli çok uzun süre olmadı aslına bakarsanız (düşündüm de çok kısa da olmamış aslında :)). Bizler de teknik bilgi ve becerilerimizi dokümanlarla beslemekle birlikte aslında hepimizin yaptığı gibi sahada deneyimliyor ve perçinliyoruz. İşte bizim kamera arkamız da tam bu sahnede başlıyor aslında.

İstek: Manşet Yanı 4'lü Haber Kutusu Geliştirmesi

JIRA’da açılan işi üstlen ve süreci ilerlet

hurriyet.com.tr — 12.01.2017 22:13 tarihli manşet ve 4'lü haber kutusu

Ürün ekibimizden gelen talep ve analiz ekibimizin çalışması sonucu işin detayları şekilleniyor ve bizler bu işi JIRA’daki “Ready For Development” kolonundan sürükleyip “To-Do” kolonuna bırakıyoruz. Let the game begin!

Branch oluştur ve geliştirmeye başla

Bu noktada hemen belirtmekte fayda var diye düşünüyorum. Bizim işimizin en önemli tarafı “iletişim”. Her ne kadar robotik ürünler ortaya koysak da bu ürünlerin gelişimi esnasında “yüz yüze iletişim”e büyük önem veriyoruz. Takıldığımız noktalarda ürün ekibimizden, analiz ekibimizden ya da yazılım ekibimizdeki diğer arkadaşlarımızdan yardım/fikir paylaşımı taleplerimiz oluyor ki böylece süreci doğru bir şekilde noktalayabiliyoruz.

Geliştirmeni tamamla, test ortamını hazır et

Kaynak: https://www.jetbrains.com/resharper/img/screenshots/code-analysis.png

Geliştirmemizin bittiğine ve test ekibimiz tarafından “functional-test”e uygun olgunluğa ulaştığını düşündüğümüzde ise test sitesini hazırlamak için “TeamCity” ürününü kullanıyoruz. Bu ürün yardımıyla repository’imize göndermiş olduğumuz geliştirme; otomatik olarak ürün tarafından çekiliyor, derleniyor, bir takım otomasyon testlerinden geçiriliyor, bazı shell script’ler çalıştırılıyor ve sitenin deploy edilebilmesi için “Octopus” adlı ürünümüze gönderiliyor. Bu ürün yardımıyla da ilgili branch’e özel test sitemiz, geliştirme ve test ekibinin hizmetine sunuluyor. Böylece farklı bir branch’te yapılan geliştirmeler o anki teste müdahil olamıyor, konsantrasyon tek bir noktada rahatlıkta toplanabiliyor.

Testten gelen bulguları çöz ve geliştirmeyi sonlandır

Geliştirme branch’imizi, “development” branch’imize merge ediyoruz. Böylece diğer onaylı tüm geliştirmelerle birlikte kendi geliştirmemiz de T anında canlı yayına çıkabilir halde bekliyor.

Canlıya çıkış

Bu süreçte öncelikle yetkili geliştirici arkadaşlarımız “development” branch’inden “master” branch’ine merge işlemini gerçekleştiriyor. Ardından sistem ekibimizin uzman ellerinden “kırmızı buton”a basmasını talep ediyoruz :)

Anlık 180k ziyaretçinin olduğu bir anda yayına çıkış enstantanesi

Octopus tarafından yönetilen bu süreçte öncelikle X adet sunucuya dağıtım sırasıyla gerçekleşiyor. Bu sırada herhangi bir kesinti olmaması için “Load-Balancing” işlemi için kullandığımız ürünün arkasından, dağıtım yapılan sunucuyu geçici olarak çıkartıyor, dağıtım bittikten sonra tekrar ekliyor ve sıradaki sunucuyu devreden çıkartıyoruz.

Kısa bir süre ekranlarımızdan herhangi bir aksaklık olup olmadığını gözlemliyoruz. Çünkü o sırada bazı kullanıcılarımız yeni versiyona ulaşırken bazıları hala bir önceki versiyonu görüyor. Böylece olası bir hata durumunda X kadar sunucuyu hızlı bir şekilde bir önceki versiyona döndürebiliyoruz.

Mutlu Son

Godfather 3'ten bir sahne

Bu süre içerisinde bir sorun gözlemlemez isek (sistem&yazılım ekibi ortak yapımı) kalan X kadar sunucuya da dağıtım işlemini gerçekleştiriyor ve deployment sürecimizi sonlandırıyoruz.

Tahmin edersiniz ki tüm bu süreçler %100 sorunsuz bir şekilde gerçekleşmiyor. Bazı sorunlarımıza hızlıca çözüm bulup uyguluyor, bazen ise bu süreci durdurabiliyoruz. Bunu da yine daha önce vurguladığım “yüz yüze iletişim” ile yürütmeyi tercih ediyoruz. Samimi ve içten bir ekip olmanın birinci koşulunun da bu olduğuna inanıyoruz.

Bu yazıyı kaleme almaya karar vermemin sebebi ise, bu süreçleri yeni yeni yaşamaya başlayan ya da yaşamaya karar veren ekiplere küçük de olsa ışık tutmaya çalışmam idi. Umarım herhangi bir cümlede ya da paragrafta “Aha! Anı” yaratabilmişimdir.

Yazımı sonlandırırken (sanırım sonuca bağlayabildim :)) samimiyetimizi ve eksiklerimizi/fazlalarımızı yansıtan — buradan ifade edebileceğim kadarıyla — bazı diyaloglarımızı sizlerle paylaşmak isterim. Aşağıdakiler gibi onlarca keyifli anıyı biriktirmekten de çok mutlu olduğumu itiraf etmeliyim.

Bir başka yazıda tekrar görüşmek dileğiyle…

NOT: Bu diyaloglardaki hiçbir kişi ve cümle hayal ürünü değildir.

— — — — — — — — — — — — — — — — —

X: Abi css’ler ezilmiş galiba, ok’lar yerine Facebook logosu geliyor!

Y: Olsun, belki yeni bir iş ortaklığını kapısını açmış oluruz.

Kısa bir süre sonra…

Y: Pilot’taki 1.0.0.1 versiyonunu canlıya alabilir miyiz? Sebep: Hot-Fix

— — — — — — — — — — — — — — — — —

X: ABC-1234 geliştirmesini pilot’ta kontrol edebilir miyiz?

Y: Geliştirme pilot’ta görünmüyor.

X: (A kişisine seslenir) ABC-1234 geliştirmesi pilot’ta görünmüyor.

A: Abi imkansız, testte onaylandı.

Kısa bir süre sonra…

A: Development brach’ine merge etmememişim, hemen hallediyorum.

Software Development Manager (at) Rasyotek. Former trainer & consultant. Family member of C# and Python. Newbie on Unix. Articles are mostly about coding.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store