!!! TAŞINIYORUZ !!!

Mehmet Çağrı Delice
Akbank Teknoloji
Published in
9 min readMar 8, 2023

“Bunun bir yenisi çıkmış onu almak lazım” cümlesini ne kadar çok duyuyoruz.

Kullandığımız araç ve gereçleri sürekli yeniliyoruz veya yenileme ihtiyacı duyuyoruz. En basit örnek cep telefonumuz; bugün ihtiyaçlarımızı karşılıyor olabilir fakat biliyoruz ki gün geçtikçe yavaşlayacak, eskiyecek ve artık kullanılamaz duruma gelecek. İhtiyaçlarımıza yönelik yeni bir ev ve arabayı da bu kapsamda değerlendirebiliriz.

Bunu sürekli yeniye doğru göç etmek olarak da düşünebilirsiniz. Değişim ve yenilenme hayatımızın vazgeçilmezleri arasında. Önemli olan ise bu zorlu değişim sürecini nasıl yönettiğimizdir.

Teknoloji ise değişimin ve yenilenmenin en hızlı olduğu alanlardan birisidir. Kurumlar gelişen ve değişen teknolojiyi sürekli takip etmek zorundadır. Bununla ilgili internette birçok makale bulabilirsiniz. Akbank Firma Entegrasyon ekibi olarak da misyonumuz kullandığımız ürünleri sürekli yenilemek ve güncel tutmaktır. Bu kapsamda birçok migration projesi yaptık ve yapmaya da devam ediyoruz.

Teknolojideki değişimlere ayak uydurmak ve ihtiyaca yönelik yeni teknolojilere geçmek dışarıdan basit gibi gözükse de işin içinde olanlar için birçok zorluk içermektedir. Software Migration projelerinin maalesef hazır bir reçetesi yoktur. Eski telefonunuzdaki verileri yeni bir telefona aktarmak için iki telefonu yan yana koyup birkaç tuşa basmak yeterli olurken yılların birikmişliklerini taşıyan uygulamaların migration’u bu kadar kolay ve pürüzsüz yapılamamaktadır.

Peki biz bu süreci nasıl yönetiyoruz? Bu yazımızda süreçlerimiz ile ilgili bilgi vermeye çalışacağız.

Software Migration nedir sorusuna wikipedia aşağıdaki cevapları vermiş.

· Software migration is the process of moving from the use of one operating environment to another operating environment that is, in most cases, is thought to be a better one.

· Migration can involve moving to new hardware, new software, or both. Migration can be small-scale, such as migrating a single system, or large-scale, involving many systems, new applications, or a redesigned network.

· One can migrate data from one kind of database to another kind of database.

· When a software migration reaches functional equivalence, the migrated application can be aligned more closely to current and future business needs through the addition of new functionality to the transformed application.

· The migration of installed software from an old PC to a new PC can be done with a software migration tool.

Ana başlıkları yukarıdaki gibidir, detaylı incelemek için aşağıdaki linkten faydalanabilirsiniz.

https://en.wikipedia.org/wiki/Software_modernization#Software_migration

Biz ekip olarak bu süreci yeni bir eve taşınma sürecine benzetiyoruz. Evet, ilk duyduğunuzda ev taşıma süreci ile software migration sürecinde nasıl bir benzerlik olur diye düşünebilirsiniz, fakat aşağıdaki maddeleri okuduğunuzda sizin de bize hak vereceğinizi düşünüyoruz.

Software Migration sürecinde yapılması gerekenleri Hazırlık, Aksiyon ve Kapanış olmak üzere üç ana başlıkta toplayabiliriz.

HAZIRLIK

“Var olan evim ihtiyaçlarımı karşılamıyor, yeni bir eve taşınmam lazım” kararını alan birinin öncelikle aşağıdaki soruları kendisine sorması gerekiyor. Buradaki cevaplara göre ihtiyaçlarına en uygun evi seçip taşınma sürecini başlatabilir.

· Nasıl bir eve taşınmam gerekiyor?

· Kaç kişilik bir aileyiz, ileride kaç kişi olmayı planlıyoruz?

· Eşya yoğunluğumuz nedir, en az kaç metrekare olması gerekiyor?

· Evin yeri nerede olacak; işe, okula veya toplu taşımaya yakın mı?

· Fiyatı ne olacak, kiralık mı tutacağız yoksa satın mı alacağız?

· Kaçıncı katta olmalı, bahçesi olsun mu, depreme dayanıklı mı? Bu soruları daha da artırabilirsiniz.

Yeni bir ev ihtiyacı özelinde sorduğumuz bu soruları değiştirip teknoloji alanında soralım ve cevap arayalım.

Kendi geliştirdiğimiz bir yazılım ürünü, hazır alınan bir ürün, kullanılan server, database veya framework artık ihtiyaçlarımızı karşılamıyor ve yeni bir teknolojiye migration yapılması gerekiyorsa, soracağımız sorular ev taşıma sürecindeki sorulara çok benzer olacaktır.

· Yeni ürünümüz (versiyon, yazılım, framework) ne olacak?

· Yeni ürün ihtiyaçlarımızın hepsini karşılayacak mı?

· Yeni ürün ilerideki hedeflerimizi gerçekleştirmek için yeterli mi?

· Yeni ürüne hangi modülleri taşıyacağız, kullanılmayan modüller nelerdir?

· Yeni ürün için yeni sunucu, database gibi bağlı ihtiyaçlar olacak mıdır?

· Yeni ürünün lisanslaması nasıl olacak, yeni lisans ihtiyacı var mıdır, yoksa var olan lisans yeniye aktarılacak mıdır?

· Yeni ürüne migration için hazır bir tool var mıdır? Bu soruları daha da artırabilirsiniz.

Yeni Ürün Seçimi:

Ev taşıma sürecinde ilk önce nasıl yeni bir ev seçiyorsak, Software Migration sürecinde de ilk aşamada yukarıdaki soruların cevaplarına göre yeni ürün belirlenmelidir. Migration projeleri yeni ürün seçimi yapıldıktan sonra başlayacaktır. Bu sebeple bu süreç ilk aşama olarak ele alınmıştır.

Yeni ürün bazen kullanılan bir programın yeni bir versiyonu olabilirken, bazen de bir kod değişimi, yenilenmesi olabilir.

Bu aşamada sorumluluk migration işlemini yapacak ekipte olmayabilir, mimari ekip yeni ürüne karar verebilir. Örneğin, Akbank Firma Entegrasyon işlemlerinde Biztalk 2016 versiyonunu kullanırken ürünün yeni versiyonuna geçiş, Biztalk’un son versiyonu olan 2020 versiyonuna yapılmıştır. Bu karar mimari ekip ve Microsoft ile beraber alınmıştır.

Migration, geliştirilen bir yazılımın framework’ünün değişimi de olabilir. Örneğin başka bir migration projemizde kullanılan bazı servisler .NET Framework’ten, .NET 6.0’a dönüştürülerek tekrar kodlanmış ve dockerize edilmiştir. Burada da karar mimari ekip ile beraber alınmıştır.

Yeni ürün seçiminde tüm aşamaların yazılı olarak saklanmasının önemli olduğu deneyimlenmiştir. Migration yeni bir ürüne geçiş ise, öncesinde ürünün deneme sürümleri denenebilir. Ürün ekibinden ürünün tanıtımı için sunumlar istenebilir. Performans ile ilgili simülasyonlar yapılabilir, daha önce aynı ürünü kullanan ekipler ile iletişime geçilerek deneyimleri dinlenebilir.

Envanter Çıkarılması:

Ev taşıma sürecinde eşyaların listesinin tutulması, atılacak eşyaların belirlenmesi, hangi kolide nelerin olacağı, koli taşıma, açma ve yerleştirme sırası gibi bilgiler elimizde olduğunda süreç daha sağlıklı ilerleyecektir.

Software Migration sırasında da taşınacak olan tüm modüllerin listesi, taşıma yapılmadan çıkarılmalıdır. Bu bir database migration için tablo isimleri olabilir, bir kod migration için kullanılan fonksiyonlar, servisler olabilir. Bir ürün için ise içerisinde bulunan projeler olabilir.

Yeni bir eve taşınmak nasıl gereksiz eşyalardan kurtulmak için bir fırsatsa, yeni bir yazılım ortamına migration yapmak da gereksiz kod bileşenlerini, uygulamaları veya tabloları emekli etmek için bize fırsatlar sunmaktadır. Migration sırasında benzeyen akışların birleştirilmesi, fazlalıkların yalınlaştırılması için de çalışmalar yapılabilir.

Envanteri hazırlama aşaması migration projelerinde kayıp zaman gibi gözükebilir fakat sonrasında sağlayacağı faydalar ile süreçte mutlaka işinize yarayacaktır. Çıkarılan envanter migration sürecinin tüm aşamalarında (planlama, taşınma, test, prod…) kullanılacaktır.

Planlama:

Ev taşınma sürecinde yeni evin hazırlanması, taşıyıcı firmanın ayarlanması, paketleme, taşınma günü gibi bilgiler nasıl planlanıyorsa, migration projeleri için de gün gün planlama önceden yapılmalıdır. Yeni bir ürün geliştirilirken çıkarılan proje planına benzer şekilde migration planı çıkarılabilir.

Migration projelerinde en öncelikli konu, süreci engelleyecek bağımlılıkların bir plan dahilinde tarihlerini belirlemektir. Örneğin çalışma yapılacak ortamlar başka bir ekip tarafından kuruluyor ise kurulum tarihleri mutlaka ilgili ekipler ile planlanmalıdır.

AKSİYON

Hedefler, envanter ve planlama bittikten sonra artık aksiyon alma süreci başlamıştır. Bu süreci kurulum, test ve taşınma süreci olarak ele alabiliriz.

Kurulum:

Ev taşıma sürecinde yeni eve yapılacak işlemler taşınma işlemi öncesinde yapılmaktadır. Örnek olarak boya, tadilat, mimari değişiklikler, internet bağlantısı, elektrik, su, doğalgaz abonelikleri gibi süreçler eşyaları yeni eve taşımadan önce, kolay bir şekilde yapılabildiği için sıklıkla taşınma öncesinde yapılır.

Migration projelerinde de ihtiyaç duyulan ortamların kurulumları ve ortamlar üzerinde yapılacak işlemler, öncesinde tamamlanmalıdır.

Bunu ihtiyaç duyulan bir sunucu veya database kurulumu olarak düşünebilirsiniz. Bunun dışında Migration sürecinin en büyük getirisi, sürekli planlanan fakat çalışan bir ortamda bir türlü yapılamayan iyileştirmeleri yapabilmemiz için bize en uygun zamanı sunmasıdır.

· INT, UAT, PREPROD ve PROD gibi ortamların kurulumu

· İhtiyaç olan framework, security, monitoring gibi yan ürünlerin kurulması

· DEVOPS süreçlerinin yeniden belirlenmesi ve iyileştirilmesi

· Yetkilerin önceden belirlenmesi

· Yedekleme, bakım, update süreçlerinin hazırlanması gibi işlemleri bu aşamada yapabiliriz.

Test:

Ev taşıma sürecinde yeni evin su, elektrik, doğalgaz, internet, güvenlik gibi sistemlerinin düzgün çalışıp çalışmadığı test edilir. Bu test sonucunda bir sorun belirlenirse hemen çözülür. Problemler taşınma sonrasına bırakılmaz.

Peki Software Migration projelerinde test nasıl yapılacak? Test sürecinin de maalesef hazır bir reçetesi yoktur. Bunun için ihtiyaç ne ise ona göre test süreci gerçekleştirilmesi gerekmektedir. Temel yaklaşım ise eski ve yeni ortamın aynı input’lara aynı output’ları dönmesini beklemektir.

Örneğin bir web servis migration projesinde daha önce çalışan web servise gönderilen request yeni sisteme gönderilir, eski sistemden alınan response ile yeni sistemden alınan response karşılaştırılarak test edilebilir. Bir database migration yapılıyor ise aynı query’lerin eski ve yeni ortamda aynı sonuçları verip vermediği test edilmelidir. Bir kod migration yapılıyor ise daha önce yazılan Unit Test’ler yeni ortamlarda da koşularak sonuçlar kontrol edilebilir.

Ayrıca ekip olarak migration projelerinde en çok zaman ayırdığımız süreç test sürecidir. Test süreçleri için projelerimizde test otomasyonları da geliştirilmiştir. Migration ihtiyacına yönelik test otomasyonu yazmak gereksiz görülebilir fakat bir otomasyon üzerinden tüm ortamlarda test yapmanın zaman ve güvenilirlik açısından birçok faydası olacaktır. İhtiyaca yönelik siz de kendi test otomasyonlarınızı oluşturabilirsiniz, performans testlerinizi simüle edebilirsiniz.

Taşınma:

Ev taşıma sürecinin en zor ve kritik günü tabi ki taşınma günüdür. Önceden planlanmış, uygun olan gün ve saatte hızlı bir şekilde organize olarak taşınma işlemi gerçekleştirilir.

Ev taşımasında en önemli unsurlardan biri de hem eski evinizden çıkarken hem de yeni evinize girerken apartmana, komşulara, çevreye hiç rahatsızlık vermemek veya minimum rahatsızlık ile süreci tamamlama gerekliliğidir.

Software migration’da ise taşınma aşamasını devreye alma olarak düşünebiliriz. Mümkünse devreye alma sürecini parçalı bir şekilde yapmayı öneririz. Ev taşıma sürecinde de benzer bir durum vardır, önce büyük eşyalar sonra küçük eşyalar taşınır. En önemli ve değerli eşyalar ise ayrı ve daha özenli bir taşıma sürecine girer. Software migration’da da öncelikli olarak en az kullanılan ve riski en düşük olan bölümler canlıya alınabilir. Daha sonra ise aşama aşama ilerleyerek en çok kullanılan ve riskli bölümler canlıya alınabilir. Bu süreci çok uzatmak, eski ve yeni sistemin bir arada yürütülmesini gerektirecektir. Eski ve yeni sistemi beraber yürütmek zor bir süreç olduğu için geçişi parçalı bir şekilde fakat mümkün olan en kısa sürede gerçekleştirmek gerekmektedir.

Firma Entegrasyon ekibi olarak, bizim gibi 7/24 kesintisiz şekilde, yüzlerce firma entegrasyonu sağlayan bir yapı için software migration sürecinde firmalarımızın hiç haberi olmaması ve olumsuz etkilenmemesi çok önemlidir. Hata alınması durumunda eski sisteme dönüş alternatifi mutlaka açık olmalıdır. Yeni taşınılan evde uydunun çalıştığı test edilmiş olsa bile, maç günü sadece maçın olduğu kanalın çalışmadığı görülürse maçı eski evde seyretme imkanınız varsa maçı kaçırmamış olursunuz. Buradaki kritik konu, eski ve yeni ortama dönüş en küçük parça bazında olmalı ve tüm sistem birlikte hareket etmemelidir.

Yol çalışmaları sırasında normal trafiği etkilememek için nasıl alternatif yollar kullanılıyorsa, Software Migration taşınma sürecinde de kullanıcıların etkilenmemesi için alternatifler çıkarılmalıdır. Kullanıcıları etkilememek buradaki temel hedeftir.

KAPANIŞ

Taşınma süreci bittikten sonra artık kapanış süreci başlamıştır. Bu süreç izleme ve kapatma olmak üzere iki aşamadan oluşmaktadır.

İzleme:

Yeni bir eve taşındıktan sonra birkaç gün içinde yeni ev bilgisinin sistemlerde güncellenmesi gerekmektedir. Yeni ikametgâh adresinin bildirilmesi, iş yeri veya banka gibi resmi kuruluşlardaki adreslerin güncellenmesi ve yakın çevrenize taşındığınıza dair yeni bilgilerin verilmesi gibi…

Software migration sürecinde de yeni sisteme geçildikten sonra sistemin yakın takip altına alınması gerekmektedir. Migration sonrasında oluşacak tüm hataların sebebinin, yeni ortamdan veya migration sırasında yanlış bir taşımadan kaynaklı olduğu düşünülecektir. Bu sebeple oluşacak hataların takibi ve sebebinin bulunması ile ilgili yakın takipte olunması gerekir. Hataların son kullanıcılar maruz kalmadan önce tespit edilmesi de önemlidir.

İzleme için ekip içerisinden ayrı bir takım da kurulabilir. Bu yakın takip süreci bir süre sonra normal seviyeye alınabilir.

Kapatma:

Yeni eve geçtikten sonra herhangi bir sorun yok ise eski evin kapatılması gerekmektedir. Bunun için eski eve gidilip taşınmamış bir eşya olup olmadığı kontrol edilir, tüm abonelikler kapatılır, boya veya temizlik yapılacak ise bununla ilgili çalışmalara başlanır. Bu işlemler de tamamlandıktan sonra eski evden tamamen taşınılmış olur.

Herhangi bir sistemden yeni sisteme taşınıldığı zaman da eski sistemin bir süre sonra kapatılması gerekmektedir. Bunun için eski sistemin çalışmadığına dair son kontrollerin yapılması gerekmektedir. Örneğin, bu bir servis projesi ise eski servise herhangi bir istek gelip gelmediği kontrol edilebilir. Sistemin çalışıp çalışmadığına dair tüm log’lar incelenebilir. Eski sistemden alınacak yedekler var ise bu yedeklerin alınması sağlanır. Tüm süreçler tamamlanmış ise eski sistem kapanışı yapılabilir.

Ekip olarak Software Migration projelerini bir zorunluluk veya üzerimizde olan bir yük gibi görmediğimizi, aksine küçük büyük her migration projesini bir yenileme fırsatı olarak gördüğümüzü belirtmek isteriz. Software Migration projelerini önemsiyoruz ve değer veriyoruz. Bu sayede bu zorlu süreçleri kolaylıkla yönetebiliyoruz.

--

--