Kimsenin dokunmaya cesaret edemediği sistem? Biz dokunuyoruz.
Geliştiricileri artık aranızda olmayan sistemlerde kontrolü geri almak: davranışı çıkarın, sistemi kararlı hâle getirin, belgeleyin — sonra rivayet yerine kanıtla yeniden mühendislik yapın.
- Triyaj
- Davranışı sabitleme
- Stabilizasyon
- Yeniden mühendislik
Çalışan sisteme saygı gösterin.
Her legacy sistem aynı nedenle risklidir: artık ne yaptığını tam olarak kimse bilmiyordur. Onu yazanlar ayrılmıştır, dokümantasyon iki kez değiştirilmiş bir sürümü anlatır ve geriye kalan sözlü bilgi iki kişinin aklında ve bir script klasöründe yaşar. Kurum da başını çevirir. Değişiklikler bir sürüm hafta sonunda toplanır, o hafta sonu her yıl biraz daha uzar ve sonunda işi hâlâ yürüten sistem, şirketin korktuğu bir sisteme dönüşür.
Biz tersini yapıyoruz. Sistemi izlenebilir hâle getirin, gerçek trafikten alınan testlerle davranışını sabitleyin ve hiçbir şeyi değiştirmeden önce rivayeti dokümantasyona çevirin. Bu sıra önemlidir: ilk aşamalarda stabilizasyon mimariden daha değerlidir, çünkü haftada iki kez çöken bir sistemde kimse yeniden mühendislik yapamaz. Ortam sakinleştikten ve davranışı kayda geçtikten sonra kanıt size hangi parçaların korunmaya değer sağlam varlıklar, hangilerinin gerçek tehlike olduğunu söyler — ve ardından gelen yeniden mühendislik genellikle sıfırdan yazım değil, bir strangler deseniyle modernizasyon olarak yürür.
Yılların kararlarını içinde taşır ve bulacağınız “hataların” çoğu taşıyıcı niteliktedir — düzenleyicinin kuralıyla örtüşen bir yuvarlama kuralı, bir iş ortağının kararsız uç noktasını telafi eden bir yeniden deneme, kimsenin belgelemediği bir amaçla yeniden kullanılan bir alan. Yeniden mühendislik projeleri kötü ününü bunları silerek kazanır.
Dört hamle, bu sırayla.
Sıranın kendisi yöntemdir. Doğrudan yeniden mühendisliğe atlamak, zor bir sistemi olay raporuna dönüştüren şeydir.
Sistem arkeolojisi
Statik analiz, çalışma zamanı izleme ve görüşmeler — sistemin ne yaptığını ve aynı ölçüde önemlisi, iş tarafının hangi parçaları gerçekten kullandığını yeniden kurmak. Ölü kod, kullanılmayan toplu işler ve yıllardır kimsenin açmadığı raporlar bulunup işaretlenir, çünkü silinebilen kapsam hiç geçirmek zorunda kalmayacağınız kapsamdır. Çıktı, iş tarafının okuyabileceği bir bağımlılık haritası ve bir risk envanteridir.
Golden-master testleri
Canlı ortam trafiğinden ve kaydedilmiş toplu işlerden gerçek girdileri ve çıktıları büyük ölçekte topluyor, sonra bunları sisteme yeniden oynatarak “doğru”nun bugün ne anlama geldiğini belirliyoruz. Sonraki her değişiklik, birinin hafızasına değil bu kayıtlı gerçeğe göre değerlendirilir. Akışlar finansal ya da düzenlemeye tabi olduğunda golden master, tüm programın kabul kanıtı hâline gelir.
Değişimden önce stabilizasyon
Önce çökme döngüleri, kaynak sızıntıları, sessiz iş hataları ve kırılgan devreye almalar giderilir — yangın hâlindeki bir sistemde yeniden mühendislik yapılamaz. Devreye almalar tekrarlanabilir ve provası yapılmış hâle gelir, hiç olmayan yerlere izleme ve uyarı eklenir ve tekrar eden başlıca olay nedenleri mühendislikle ortadan kaldırılır. Tek başına bu faz genellikle ekibin akşamlarını geri verir; programa güvenilirliğini kazandıran da budur.
Bilginin kayda geçirilmesi
Mimari dokümanlar, karar kayıtları ve runbook’lar, sonda kimsenin okumadığı bir çıktı olarak değil, öğrendikçe yazılır. Her biri sistemin ne yaptığını, bunu neden o şekilde yaptığını ve neyin ona bağlı olduğunu adlandırır. Amaç, riskin bir daha tek bir kişide toplanmamasıdır — buna biz de dahiliz; her şeyin ilerledikçe yazıya dökülmesinin nedeni budur.
İş günlük olarak nasıl yürür?
Risk envanteri mimari diyagramı geride bırakır.
Ürettiğimiz ilk çıktı bir hedef mimari değildir. Gerçekte nelerin ters gittiğinin sıralı bir envanteridir: hangi alt sistemler olaylara yol açıyor, ne sıklıkla, her biri kesinti ya da elle düzeltme olarak neye mal oluyor ve kurumda kaç kişi bunları anlıyor. Bazı kalemlerin düzeltilmesinin ucuz, korunmasının pahalı olduğu ortaya çıkar — uyarısı olmayan gecelik bir iş, elle yenilenen bir sertifika. Diğerleri yapısaldır ve yeniden mühendislik planına girer. Her iki durumda da iş tarafı, inanmak zorunda olduğu bir resim yerine finanse edebileceği bir iş sırası elde eder.
- Olay geçmişi, değişiklik geçmişi ve çalışma zamanı izleri ayrı ayrı değil birlikte okunur
- Bus factor her alt sistem için kaydedilir, çünkü tek bir uzman da diğerleri gibi bir risktir
- Her kalem bir maliyet ve önerilen bir hamle taşır; böylece envanter finans tarafından önceliklendirilebilir
Golden master, sistemi önce anlamak zorunda kalmadan test edilebilir kılar.
Bir sistemin ne yaptığını kaydetmek için onu anlamanız gerekmez. Temsili canlı ortam girdilerini — istekler, mesaj içerikleri, toplu dosyalar — ürettikleri çıktılar ve yan etkilerle birlikte topluyor ve istendiğinde yeniden oynatılabilecek bir set olarak saklıyoruz. O andan itibaren sistemin bir güvenlik ağı olur: kayıtlı bir çıktıyı değiştiren her değişiklik, ay sonunda değil derlemede ortaya çıkar. Kapsam satır sayısına göre değil iş değerine göre büyür; parayı, düzenleyici raporlamayı veya müşteri taahhütlerini taşıyan akışlar önce kapsanır.
- Canlı ortam ölçeğinde kaydedilmiş girdi ve çıktılar; kişisel veriler saklanmadan önce maskelenir
- CI içinde yeniden oynatma; davranışı değiştiren bir değişiklik ay sonunu değil derlemeyi düşürür
- Kapsam iş akışı bazında izlenir; kritik set yeniden mühendislik başlamadan önce tamamlanır
Stabilizasyon, gerisinin masrafını çıkaran kısımdır.
Haftada iki kez birini nöbetten uyandıran bir sistem, programın ihtiyaç duyduğu dikkati tüketir. Bu yüzden ilk mühendislik işi gösterişsiz ve aciledir: derlemeyi tekrarlanabilir yapmak, devreye almayı bir ritüel olmaktan çıkarıp tek komuta indirmek, hataların bugün sessiz kaldığı yerlere izleme eklemek ve olayların çoğunun ardındaki birkaç nedeni gidermek. Devreye almanın artık bir sürüm hafta sonu gerektirmemesi, kurumun bu sistemle nelerin mümkün olduğuna dair inancını değiştirir ve olay oranı eğilimi, programın üzerinden değerlendirildiği sayı hâline gelir.
- Tekrarlanabilir derleme ve devreye alma hattı, genellikle konteyner üzerinde, provası yapılmış bir geri alma ile
- Hataların sessiz kaldığı yerlere izleme, uyarı ve log toplama eklenir — bkz. DevOps & Cloud
- Başlıca olay nedenleri mühendislikle ortadan kaldırılır ve eğilim düzenli olarak yayımlanır; böylece iyileşme görünür olur
Masanın her tarafı ne kazanır.
Önce güvenlik ağı, sonra yeniden düzenleme.
Mühendisleriniz sistemin sahipliğini baştan sona korur. Haritanın ortak olması için arkeolojiyi birlikte yürütürüz, golden-master setini rapor olarak değil çalışan bir araç olarak devrederiz ve ilk stabilizasyon düzeltmelerini birlikte yaparız. Programın hiçbir parçası bizim kalmamıza bağlı değildir.
- Sizin CI’nızda, sizin depolarınızda çalışan golden-master ve karakterizasyon setleri
- Çalışma ortamının izin verdiği yerde Docker ile konteynerleştirilmiş, provası yapılmış geri alma içeren tekrarlanabilir derlemeler
- En kritik akışlara izleme ve yapılandırılmış loglama eklenir
Daha az nöbet çağrısı, kalanlar için de bir runbook.
Sessiz hatalar uyarıya, uyarılar runbook’a dönüşür ve runbook’ların provası, onlarla uyandırılacak kişilerle birlikte yapılır. Amaç bir pano değil; bir sonraki olayın, sistemi bilen tek kişi tarafından değil nöbette kim varsa onun tarafından çözülmesidir.
- Eskiden ertesi sabah fark edilen hatalar için uyarı
- Gerçek olaylardan yazılmış, nöbet çizelgenizle provası yapılmış runbook’lar
- Olay oranı için başlangıç değeri ve eğilim yayımlanır; böylece iyileşme ölçülebilir olur
Yazılı bir karar ve altındaki kanıt.
Triyaj ayrı fiyatlanan bir iştir ve bir dokümanla biter: sistem ne yapıyor, olduğu gibi çalışmaya devam etmesi neye mal oluyor, hangi parçalar varlık hangileri tehlike ve her seçenek neyi gerektirir. Dürüst yanıt bir alt sistemin değiştirilmesi gerektiğiyse, doküman kanıtı ekleyerek bunu söyler.
- Her kalem için maliyet ve önerilen hamle içeren risk envanteri
- Yazılı öneri — koruma, yerinde yeniden düzenleme veya dikişten ayırıp değiştirme
- Bilgi sizin dokümantasyonunuza geçirilir; böylece tek kişiye bağımlılık sona erer
Yeniden mühendislik, sıfırdan başlama içgüdüsüne karşı.
Dört faz, her kapıda kanıt.
Triyaj
Ne bozuluyor, ne sıklıkla ve neye mal oluyor — geri kalan her şeyi sıraya koyan risk envanteri. Kodu, olay geçmişini ve değişiklik kaydını okur, çalışan sistemi izler ve geride kalan herkesle görüşürüz. Triyaj ayrı fiyatlanan bir iştir ve yazılı bir kararla biter; böylece ucu açık bir arkeoloji kazısı satın almazsınız.
Davranışı sabitleme
Önemli akışlar üzerinde, gerçek trafikten alınıp CI’da yeniden oynatılan golden-master ve karakterizasyon testleri. Kişisel veriler kayıt anında maskelenir. Bu, sonraki her değişikliği geri alınabilir kılan güvenlik ağı ve sistemin bugün gerçekte ne vaat ettiğini size söyleyen çıktıdır.
Stabilizasyon
Devreye almalar tekrarlanabilir hâle getirilir, hataların sessiz kaldığı yerlere izleme eklenir ve başlıca olay nedenleri mühendislikle ortadan kaldırılır. Amaç, devreye almaların artık bir sürüm hafta sonu gerektirmemesidir ve olay eğilimi programın herkese açık karnesi olur. Ortam sakinleşene kadar yapısal hiçbir şey değiştirilmez.
Yeniden mühendislik
Testler koruma bariyeri olarak: kodun sağlam bir varlık olduğu yerde yerinde yeniden düzenleme, tehlike olduğu yerde dikişlerden ayırma — kanıt hangisini destekliyorsa. Ayırma işi, gölge çalıştırma ve provası yapılmış geri almalarla, Yazılım Modernizasyonu ile aynı disiplinde yürür.
Elinizde ne kalır.
- Sistem ortamının risk envanteri ve bağımlılık haritası
- Kritik akışlar üzerinde golden-master test seti
- Tekrarlanabilir derleme & devreye alma hattı
- Mimari dokümantasyon ve karar kayıtları
- Olay oranı başlangıç değeri ve eğilimiyle kararlı bir sistem
Bu ne zaman doğru tercih.
Legacy yeniden mühendisliği; sistem işin anlamlı bir bölümünü hâlâ yürütüyorsa, onu kuranlar ayrılmışsa ve kurum onun etrafından dolaşmaya başlamışsa — değişiklikleri toplu hâle getiriyor, bir modülden kaçınıyor, otomatik olana kimse güvenmediği için elle düzeltme adımını sürdürüyorsa — seçin. Riskin bir iki kişide toplandığı, devreye almaların başlı başına birer operasyona dönüştüğü ve bir düzenleyicinin, bir denetçinin ya da bir satın alma adayının mevcut dokümantasyonun yanıtlayamayacağı soruları sormak üzere olduğu ortamlara uyar. Ayrıca her geçişten önceki doğru ilk adımdır: hiç kimse ne yaptığını bilmeden bir sistemi buluta taşımamalıdır.
Sistem küçük ve iyi anlaşılmışsa, ekip de yalnızca teknoloji yığınını modernize etmek istiyorsa bu yanlış hizmettir — o, sıradan mühendislik işidir. İş yetkinliğinin kendisi geçerliliğini yitirmişse ve asıl soru onun yerine ne geleceğiyse yine yanlıştır; bu soru Ürün Keşfi kapsamına girer. Kurumun sistemi hatırlayan hiç kimseyi ayıramadığı ve katılmadığı yazılı bir kararı kabul etmediği yerlerde de zorlanır: yöntem, tartışmaları kanıtın bitirmesine izin verilmesine dayanır.
Sık sorulan sorular
Bu hizmet genellikle nereye oturur.
Ne inşa ettiğinizi anlatın.
Bugün elinizde ne olduğunu ve neye ihtiyacınız olduğunu anlatın. Bir mühendis okur; nasıl yaklaşacağımızı ve size uyan modeli yazılı olarak iletir.