自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何交接復(fù)雜的遺留系統(tǒng)?

開發(fā) 開發(fā)工具
在交接的過程中,團隊面臨很多的挑戰(zhàn),嘗試了很多辦法,同時沉淀了一些經(jīng)驗。我們將通過這篇文章將經(jīng)驗和實踐分享出來,希望幫助到更多人。

一半以上的新項目,都始于交接。交接期有長有短,交接形式多種多樣。不管怎樣,從客戶關(guān)系、團隊工作方式等各方面,交接期都奠定了項目進入穩(wěn)定交付或維護期的基調(diào)。

2020年10月,Thoughtworks的C團隊從客戶團隊交接了一個有近20年歷史的支付網(wǎng)關(guān)系統(tǒng)。這個支付網(wǎng)關(guān)主要向英語系地區(qū)的企業(yè)提供信用卡支付,儲蓄卡支付等支付相關(guān)的功能,每個月的交易額過億。

2021年1月起,C團隊正式接手該項目的日常運維工作。不僅需要保證系統(tǒng)穩(wěn)定運行,提供7×24小時On Call支持,還要響應(yīng)日常業(yè)務(wù)的需求,同時保證整個支付網(wǎng)關(guān)符合支付卡行業(yè)數(shù)據(jù)安全標準(Payment Card Industry Data Security Standard,縮寫為 PCI-DSS)。

在交接的過程中,團隊面臨很多的挑戰(zhàn),嘗試了很多辦法,同時沉淀了一些經(jīng)驗。我們將通過這篇文章將經(jīng)驗和實踐分享出來,希望幫助到更多人。

挑戰(zhàn)

作為一個歷史悠久的“大齡”支付網(wǎng)關(guān),在交接過程中我們遇到了一系列的挑戰(zhàn),大致可以分為下面兩類:

1. 業(yè)務(wù)復(fù)雜度高

業(yè)務(wù)上,這個支付網(wǎng)關(guān)光是在卡支付的場景下就同時支持8種技術(shù),還有信用卡相關(guān)的安全功能,數(shù)不清的報表和各種增值服務(wù)。

技術(shù)上,總共有100多個服務(wù)和300多個代碼庫,部署在超過200個EC2上;服務(wù)之間耦合嚴重;許多服務(wù)沒有部署流水線、沒有測試環(huán)境甚至沒有源代碼;經(jīng)常需要手工操作生產(chǎn)環(huán)境數(shù)據(jù)庫來解決問題;操作系統(tǒng)和軟件包版本非常陳舊等。

項目管理上,沒有總結(jié)和沉淀出完整而清晰的業(yè)務(wù)和技術(shù)文檔。

2. 交接內(nèi)容多、時間短、范圍不明確

交接開始前,團隊接受到的信息只有100多個服務(wù)的名字,內(nèi)容非常有限;交接的時間周期比較緊張(初步計劃只有30個工作日),沒有足夠的時間去了解到系統(tǒng)的所有功能。

實踐

1. 分階段制定目標、建立重點

我們一般如何衡量一個遺留項目維護的質(zhì)量呢?

  • 短期:至少做到跟前團隊一樣。也就是說,在客戶團隊成員離開時,團隊能具備足夠的知識和技能來處理線上事故和日常業(yè)務(wù)工作。
  • 長期:體現(xiàn)Thoughtworks不一樣的地方。對項目的業(yè)務(wù)、技術(shù)和發(fā)展歷史有足夠了解,足以給出一個改進計劃,在未來一個比較長的時間里落地、給客戶帶來更大價值。

鑒于項目的復(fù)雜度,在有限的交接期內(nèi)達到這個目標基本是不可能的。但是如果將時間軸拉長,分階段來實施,就比較容易做出一個切實可行的計劃;同時,也能最大化交接期的價值,讓團隊從第一天起就朝著一個方向努力。

基于此,團隊從實際情況出發(fā),將項目分為三階段:

通過對項目不同階段目標的一致認識,減少了一些團隊在交接期的焦慮與慌亂,從而想出更多創(chuàng)造性的點子,并勇敢的嘗試、反饋、迭代,達到各個階段的目標。

2. 利用C4模型梳理系統(tǒng)架構(gòu)

通常處理的問題都是業(yè)務(wù)問題,如果不能把一個個服務(wù)放在業(yè)務(wù)流程中去理解就沒有意義。因此,我們在交接完一個獨立服務(wù)或者若干個有關(guān)聯(lián)的服務(wù)后,都會試圖用C4模型畫出他們的C1(System Context Diagram)和 C2(Container Diagram)兩個高級別的圖,以可視化的方式展示出系統(tǒng)輸入、輸出和各服務(wù)的依賴關(guān)系。

實踐證明,畫圖的過程可以幫助大家更好地吸收碎片化知識,有利于整個團隊將知識匯總和沉淀。同時,相比于反復(fù)的解釋說明,圖是一種更有效的語言。

有些比較獨立的模塊相對比較容易畫,但是涉及到不同版本API的支付流程,就需要不斷地獲取更多的信息來完善,反復(fù)跟客戶確認。有些環(huán)節(jié)甚至在交接結(jié)束后依舊沒能打通或者沒時間梳理,只能在交接后,作為深入理解期的目標繼續(xù)完善。

支付系統(tǒng)C1簡化圖(簡化版)

3. 通過結(jié)對在團隊內(nèi)部分享上下文

在第一階段交接的過程中,我們和客戶團隊是“1+1”的模式進行知識交接,業(yè)務(wù)知識是像孤島一樣分散在各個成員那里。另外,我們團隊又因為每個人加入項目的時間和技能背景的不同,對一些背景信息、業(yè)務(wù)上下文、技術(shù)實現(xiàn)的掌握有一些差距。

因此,在進入項目交接的第二階段開始,對于大部分的工作內(nèi)容,我們都通過結(jié)對的方式來進行。根據(jù)不同的業(yè)務(wù)和優(yōu)先級,我們劃分了幾個重要的主題,比如:日常需求相關(guān)的任務(wù),PCI 相關(guān)的任務(wù)和生產(chǎn)環(huán)境的變更等。我們會通過專長和對服務(wù)的熟悉程度分工結(jié)對,讓這兩個人可以成為團隊內(nèi)相應(yīng)領(lǐng)域的專家。

這樣的好處有主要有:保證對應(yīng)的知識能在團隊中傳播開來,消除知識孤島;避免某個成員因為請假導(dǎo)致重要的任務(wù)不能進行;重要的線上操作可以多一個人幫忙檢查。

在安排 Primary On Call 和 Secondary On Call 的時候,采取“Dev + DevOps”的組合,保證有足夠的技能應(yīng)對線上事故。在線上事故發(fā)生的時候,兩個人一起結(jié)對配合處理。

雖然結(jié)對在前期會影響效率,但能確保團隊中至少兩個人熟悉特定的業(yè)務(wù),最終可以讓整個團隊擁有響應(yīng)事故的能力。從現(xiàn)在的結(jié)果來看,正是這種結(jié)對的形式,保證了整個團隊的“高可用”。

4. 通過線上事故演練提升團隊On Call的信心

7 × 24 小時 On Call 對團隊來說,無疑會是一個非常大的挑戰(zhàn)。在正式接手系統(tǒng)之前,團隊感受到了比較大的壓力。這些壓力一方面是因為大部分項目成員缺少 On Call 的實戰(zhàn)經(jīng)驗,另外一方面因為在交接的第一階段里,我們?nèi)鄙賹I(yè)務(wù)實現(xiàn)細節(jié)和系統(tǒng)的深入了解。

On Call工程師不僅要參照標準處理流程,還需要在短時間內(nèi)評估線上問題造成的影響并精準地解決,那么用以前發(fā)生過的事故來演練就成了我們在深入理解期的最好的學(xué)習(xí)方式。

在正式承擔(dān)On Call的職責(zé)前,我們每個迭代都會有一個模擬線上事故處理的活動,主要流程為:

  • 組織者會去從過去的線上故障里挑選一個有代表性的事故來模擬,比如是某一個與其他網(wǎng)關(guān)集成服務(wù)的事故;
  • 團隊約定2個小時來模擬線上事故,組織者還原當(dāng)時場景,其他成員在不知情的情況下按照自己的理解進行適當(dāng)?shù)淖穯?
  • 分成兩個小組,根據(jù)現(xiàn)有的情況定位問題,并給出解決方案;
  • 組織者進行復(fù)盤,梳理相關(guān)知識點。

通過以上方式,我們得以快速適應(yīng)On Call的節(jié)奏。到現(xiàn)在為止,我們團隊的每個成員都有作為Primary On Call的經(jīng)驗了。

結(jié)語

在交接的三個月里,我們持續(xù)地改進交接方式,最終將項目成功地從客戶團隊手中接過。無論是交付主管,還是和我們合作的客戶團隊都對我們的工作提出了稱贊。在摸索交接的過程中,我們嘗試了不同的方式讓我們的交接平滑順利,并將對交接有幫助的實踐分享出來,希望對大家有所幫助。

【本文是51CTO專欄作者“ThoughtWorks”的原創(chuàng)稿件,微信公眾號:思特沃克,轉(zhuǎn)載請聯(lián)系原作者】

戳這里,看該作者更多好文

 

責(zé)任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2024-04-12 10:03:48

2022-07-08 09:41:20

遺留系統(tǒng)服務(wù)拆分

2010-09-06 16:35:58

SQL函數(shù)

2021-01-15 11:01:42

IT系統(tǒng)漏洞網(wǎng)絡(luò)攻擊

2023-06-25 12:22:25

IT領(lǐng)導(dǎo)者CIO

2018-05-03 15:34:34

組件測試遺留系統(tǒng)微服務(wù)

2018-11-29 09:36:45

架構(gòu)系統(tǒng)拆分結(jié)構(gòu)演變

2022-08-24 09:50:40

系統(tǒng)運維

2021-07-09 05:25:48

CIO遺留系統(tǒng)現(xiàn)代化用戶體驗

2022-11-09 10:02:21

CDC遺留系統(tǒng)

2024-01-09 07:34:28

Rust架構(gòu)語言

2014-02-13 09:47:41

GartnerERP云ERP

2021-06-27 17:20:20

遺留系統(tǒng)隱形成本CIO

2013-09-12 09:39:38

遺留系統(tǒng)云遷移API

2017-12-28 10:07:50

程序員代碼庫遺留代碼

2013-06-04 09:16:29

Google存儲數(shù)據(jù)

2020-11-30 10:13:17

ITCIO首席信息官

2021-12-27 11:02:00

首席信息官技術(shù)發(fā)展企業(yè)管理者

2013-09-16 13:18:28

遺留系統(tǒng)系統(tǒng)遷移

2010-09-01 16:08:03

遺留系統(tǒng)Java
點贊
收藏

51CTO技術(shù)棧公眾號