編譯 | 核子可樂、Tina
馬斯克領(lǐng)導(dǎo)的 DOGE 團(tuán)隊(duì)正醞釀一場豪賭:他們計(jì)劃在短短幾個(gè)月內(nèi)重寫一套運(yùn)行了數(shù)十年的核心代碼庫。該代碼庫包含數(shù)千萬行 COBOL 代碼,以及部分匯編語言。按理來說,要安全、完整地重寫這些代碼,至少需要數(shù)年時(shí)間,而將這一過程壓縮到幾個(gè)月幾乎是不可能完成的任務(wù)。
如果他們真的成功了,這將徹底顛覆傳統(tǒng) IT 領(lǐng)域的認(rèn)知,足以讓任何經(jīng)驗(yàn)豐富的程序員和 IT 專家感到脊背發(fā)涼、難以置信。
快刀斬亂麻式的重構(gòu)?
前兩天,據(jù)《連線》雜志報(bào)道,DOGE 正著手組建新團(tuán)隊(duì),負(fù)責(zé)在未來數(shù)月之內(nèi)將社會(huì)保障管理局(SSA)計(jì)算機(jī)系統(tǒng)所使用的古老編程代碼中遷移出來。
該項(xiàng)目由馬斯克的副手史蒂夫·戴維斯?fàn)款^,負(fù)責(zé)將全部 SSA 系統(tǒng)從 COBOL(最早的主流面向業(yè)務(wù)編程語言之一)遷移到更為現(xiàn)代的替代性語言如 Java 上,而且工期只有短短數(shù)月——典型的時(shí)間緊、任務(wù)重。
無論從哪個(gè)角度來看,此等規(guī)模的遷移都將是一項(xiàng)艱巨的任務(wù),而過度強(qiáng)調(diào)遷移速度很可能導(dǎo)致目前正在領(lǐng)取社保福利的 6500 多萬美國民眾受到影響。“當(dāng)然,其中最核心的風(fēng)險(xiǎn)還不是多付或少付了款項(xiàng),而是系統(tǒng)壓根沒有向某人付款且未能察覺出異常。總之,看不見的錯(cuò)誤和遺漏才是最致命的。”一位 SSA 技術(shù)專家告訴《連線》雜志。
與眾多傳統(tǒng)的遺留 IT 系統(tǒng)一樣,SSA 系統(tǒng)包含使用 COBOL 編寫的代碼。COBOL 是一款由 Grace Hopper 于 1950 年建立雛形的編程語言。COBOL 誕生后不久,美國國防部開始推動(dòng)該語言在私營企業(yè)中的應(yīng)用,促使其得到廣泛普及,并在 1970 年代成為大型機(jī)(即能夠快速處理和存儲(chǔ)大量數(shù)據(jù)的計(jì)算機(jī)系統(tǒng))中使用最廣泛的語言之一。然而,近年來,在“去 DEI”行動(dòng)中,與 Hopper 成就相關(guān)的一些網(wǎng)站逐漸下線(Grace Hopper 是女性計(jì)算機(jī)編程的先驅(qū))。
直到 2016 年,SSA 基礎(chǔ)設(shè)施當(dāng)中仍包含超過 6000 萬行用 COBOL 編寫的代碼,外加數(shù)百萬行使用其他傳統(tǒng)語言編寫的代碼。事實(shí)上,根據(jù) SSA 自己的 2017 年現(xiàn)代化計(jì)劃里的說法,自 1980 年代其開發(fā)自有數(shù)據(jù)庫系統(tǒng) MADAM(主數(shù)據(jù)訪問方法,此系統(tǒng)采用 COBOL 加匯編語言編寫而成)以來,SSA 的核心程序系統(tǒng)與架構(gòu)就再未進(jìn)行過“大幅度”更新。
SSA 的核心“邏輯”也主要用 COBOL 編寫。一位曾在 CIO 辦公室工作的前 SSA 高級(jí)技術(shù)專家表示,這些代碼主要用于發(fā)布社保號(hào)碼、管理付款乃至計(jì)算受益人所應(yīng)申領(lǐng)的總福利金額。因此,即使是微小的變化也有可能在整個(gè)程序內(nèi)引發(fā)連鎖故障。
目前尚不清楚軟件升級(jí)工作何時(shí)開始。據(jù)《華盛頓郵報(bào)》本周報(bào)道,在過去幾周里,由于 DOGE 大幅削減了 SSA 預(yù)算,導(dǎo)致其官方網(wǎng)站經(jīng)常崩潰、電話咨詢的等待時(shí)間也大大延長。
最近發(fā)現(xiàn),,這顯然不正常。有懷疑聲稱,他們社保系統(tǒng)中可能存在大量的欺詐和錯(cuò)誤,例如某些已故人士的社保福利仍在繼續(xù)發(fā)放。馬斯克領(lǐng)導(dǎo)的“DOGE”團(tuán)隊(duì)目前有約 10 人在 SSA 工作,他們的任務(wù)是清理這個(gè)系統(tǒng)中的“死人”賬戶,將這個(gè)系統(tǒng)與其他部門的數(shù)據(jù)庫連接,方便核對(duì)信息,并通過電話確認(rèn)領(lǐng)款人是否還活著,以防止欺詐。此外,DOGE 還希望法院授權(quán)其全面訪問 SSA 系統(tǒng),以完成這一任務(wù)。
在組織將新應(yīng)用程序部署到生產(chǎn)環(huán)境之前,必須對(duì)軟件進(jìn)行錯(cuò)誤測試。Wired 援引的這位前 SSA 技術(shù)專家表示,DOGE 提議的 COBOL 重寫的測試階段本身就需要幾年時(shí)間。如果在幾個(gè)月內(nèi)進(jìn)行重寫,DOGE 的開發(fā)人員可能需要跳過重要的質(zhì)量保證步驟,這將增加技術(shù)問題的風(fēng)險(xiǎn)。
這位 SSA 技術(shù)專家還補(bǔ)充道,在幾年之內(nèi)解決所有潛在極端情況已經(jīng)相當(dāng)困難,壓縮到幾個(gè)月簡直是難以想象。
曾在 CIO 辦公室工作的 SSA 前高級(jí)技術(shù)專家在采訪中也坦言,“SSA 原本的系統(tǒng)幾乎就是用鐵絲和膠帶勉強(qiáng)固定起來的。領(lǐng)導(dǎo)層必須要清楚,他們面對(duì)的是一座本就搖搖欲墜的「紙牌屋」。一旦像他們宣稱的那樣從中抽出紙牌,整個(gè)體系都有可能瞬間坍塌。”
原計(jì)劃“五年”完成核心系統(tǒng)現(xiàn)代化
此次擬議的遷移,已經(jīng)不是 SSA 第一次嘗試放棄 COBOL 代碼。早在 2017 年,SSA 就曾公布一項(xiàng)計(jì)劃,希望申請數(shù)億美元經(jīng)費(fèi)來更換其核心系統(tǒng)。但隨著 2020 年疫情暴發(fā),該機(jī)構(gòu)放棄了這項(xiàng)工作,轉(zhuǎn)而專注更多面向公眾的項(xiàng)目。
該計(jì)劃指出,SSA 系統(tǒng)每年需處理超過 3700 萬通電話,并發(fā)布高達(dá) 2.66 億份收入報(bào)告,這對(duì)技術(shù)基礎(chǔ)設(shè)施提出了極高的要求。然而,SSA 的核心系統(tǒng)大多已運(yùn)行超過 30 年,部分嵌入式軟件組件甚至更為老舊。
同時(shí),在這 30 年的時(shí)間里,SSA 的系統(tǒng)經(jīng)歷了不斷的變化,以融入立法、法規(guī)和政策的變化。多年來,新技術(shù)和功能已被修補(bǔ)到核心系統(tǒng)中,但沒有進(jìn)行根本性的重新設(shè)計(jì)。每次修補(bǔ)和變通都會(huì)使系統(tǒng)變得更加脆弱,從而使下一次變更變得更加“昂貴”。
“多年來,新技術(shù)已被集成到這些遺留系統(tǒng)中,但這些集成并未對(duì)系統(tǒng)和操作環(huán)境進(jìn)行根本性的重新設(shè)計(jì)。如今,在這個(gè)遺留環(huán)境中運(yùn)營的成本非常高。”
為了應(yīng)對(duì)龐大的用戶基數(shù)和復(fù)雜的業(yè)務(wù)需求,SSA 深知其 IT 系統(tǒng)現(xiàn)代化改造是一項(xiàng)高風(fēng)險(xiǎn)的重大投資,如同“飛行中重建飛機(jī)”,預(yù)計(jì)需要五年左右的時(shí)間才能完成整體系統(tǒng)的現(xiàn)代化轉(zhuǎn)型。為了實(shí)現(xiàn)這一目標(biāo),SSA 制定了一個(gè)“IT 現(xiàn)代化計(jì)劃”:“IT 現(xiàn)代化計(jì)劃代表了 SSA 在一個(gè)擁有數(shù)百萬個(gè)個(gè)人和數(shù)千名員工的大型聯(lián)邦機(jī)構(gòu)中推動(dòng) IT 改進(jìn)的方案。”
他們計(jì)劃在五年內(nèi)投資 6.77 億美元,用于六個(gè)關(guān)鍵轉(zhuǎn)型項(xiàng)目以及支撐這些項(xiàng)目的基礎(chǔ)設(shè)施建設(shè)。
當(dāng)時(shí)的計(jì)劃是讓業(yè)務(wù)系統(tǒng)能夠在云端運(yùn)行,并且能夠跨多個(gè)平臺(tái)操作。同時(shí)將舊的 z/OS 主機(jī)系統(tǒng)遷移到更靈活的 Linux 環(huán)境,擺脫舊系統(tǒng)的束縛。另外,還會(huì)進(jìn)行 DevOps 轉(zhuǎn)型 ,這樣才能更快地推出新功能,提高軟件質(zhì)量。
他們還需要推進(jìn)數(shù)據(jù)存儲(chǔ)方案的現(xiàn)代化改造,以解決遺留系統(tǒng)帶來的信息孤島、技術(shù)限制和效率低下等問題,并特別強(qiáng)調(diào)了改造內(nèi)部批處理數(shù)據(jù)庫系統(tǒng) MADAM 所面臨的挑戰(zhàn)。
“與今天市面上商業(yè)關(guān)系數(shù)據(jù)庫產(chǎn)品相比,MADAM 已經(jīng)在技術(shù)上過時(shí),功能上也相對(duì)原始。該機(jī)構(gòu)的核心數(shù)據(jù)系統(tǒng)是圍繞當(dāng)時(shí)廣泛使用的磁帶存儲(chǔ)技術(shù)的局限性設(shè)計(jì)的。由于磁帶技術(shù)不允許隨機(jī)數(shù)據(jù)訪問,所有更新都通過定期合并在臨時(shí)存儲(chǔ)區(qū)排隊(duì)的更新進(jìn)行管理。盡管磁帶存儲(chǔ)已經(jīng)被淘汰,且更先進(jìn)的能力已經(jīng)可用,但夜間合并模型依然存在。
多年來,我們的數(shù)據(jù)存儲(chǔ)已經(jīng)發(fā)展到在多個(gè)地方捕捉到相似的數(shù)據(jù),且其含義稍有不同。這種情況發(fā)生是因?yàn)殡S著我們遺留系統(tǒng)的演變,機(jī)構(gòu)經(jīng)常重復(fù)數(shù)據(jù)以獲得更好的性能。此時(shí),我們的分析師和開發(fā)人員需要反復(fù)進(jìn)行詳細(xì)分析,以理解在特定應(yīng)用程序中使用哪些數(shù)據(jù)源以及如何將這些數(shù)據(jù)與其他數(shù)據(jù)源進(jìn)行對(duì)比。
開發(fā)新功能本應(yīng)快速實(shí)現(xiàn),但卻需要系統(tǒng)分析師、開發(fā)人員和政策專家進(jìn)行廣泛的分析,以確保變更正確。這增加了我們的項(xiàng)目時(shí)間表,也使開發(fā)成本更高。當(dāng)我們希望使用我們的廣泛數(shù)據(jù)進(jìn)行管理報(bào)告或業(yè)務(wù)分析時(shí),我們發(fā)現(xiàn)類似數(shù)據(jù)之間的細(xì)微差別導(dǎo)致分析結(jié)果的不一致。這意味著我們得到的答案可能會(huì)出現(xiàn)不一致的情況。”
在改造過程中,SSA 也面臨著其他大型項(xiàng)目常見的多重風(fēng)險(xiǎn)。
例如,新舊系統(tǒng)需要并行運(yùn)行數(shù)年,因此會(huì)面臨混合環(huán)境的挑戰(zhàn),如何培訓(xùn)員工同時(shí)掌握兩套系統(tǒng)的操作和維護(hù)是亟待解決的問題。其次,數(shù)據(jù)完整性是另一個(gè)關(guān)鍵風(fēng)險(xiǎn)。新舊數(shù)據(jù)源的整合,特別是批處理過程中驅(qū)動(dòng)的數(shù)據(jù)轉(zhuǎn)換,容易出現(xiàn)錯(cuò)誤,從而影響數(shù)據(jù)的準(zhǔn)確性。接下來是代碼質(zhì)量問題,部署新軟件后可能會(huì)出現(xiàn)問題,需要快速回滾到先前版本,這就要求在開發(fā)過程中進(jìn)行充分的測試,并建立完善的回滾機(jī)制。此外,網(wǎng)絡(luò)安全風(fēng)險(xiǎn)不斷升級(jí),外部攻擊和內(nèi)部威脅不斷增加,需要不斷更新安全措施,以確保交易和數(shù)據(jù)的安全。
這些 SSA 在原改造計(jì)劃中提到的挑戰(zhàn),DOGE 同樣需要面對(duì),一個(gè)也逃不了。
社交媒體一致唱衰:
“這不可能!”
對(duì)于維護(hù)過舊系統(tǒng)的開發(fā)者而言,一個(gè)深刻的教訓(xùn)是:貿(mào)然修改不了解歷史背景的代碼,往往會(huì)導(dǎo)致災(zāi)難性后果。那些充滿熱情想要重構(gòu)“遺留代碼”的程序員,常常因?yàn)楹雎韵到y(tǒng)間的依賴關(guān)系而引入新 bug,甚至破壞經(jīng)過時(shí)間考驗(yàn)的核心功能。
面對(duì) COBOL 這門古老的編程語言,作為“面向業(yè)務(wù)的通用語言”,它的語法結(jié)構(gòu)接近英語日常表達(dá),甚至不需要四年計(jì)算機(jī)專業(yè)訓(xùn)練就能掌握。但真正的挑戰(zhàn)隱藏在運(yùn)行時(shí)環(huán)境這個(gè)“黑匣子”中。程序員需要面對(duì)活化石般的大型機(jī)架構(gòu)、源自打孔卡時(shí)代的作業(yè)控制語言(JCL)、CICS 交易處理系統(tǒng)等。

這部分相對(duì)簡單,但真正的難點(diǎn)在于理解所有這些“拼圖”如何組合起來,哪些程序提供的輸出是其他程序的輸入。大多數(shù)大型機(jī)系統(tǒng)會(huì)為其他程序創(chuàng)建“文件”(數(shù)據(jù)集),而不是直接調(diào)用其他程序,它們依賴 JCL 來提供運(yùn)行作業(yè)所需的輸入和輸出參數(shù)。比如,程序 A 并不知道它正在寫入一個(gè)名為 output.txt 的文件,它只知道它在寫入名為 output 的輸入?yún)?shù),而 output 是由 JCL 在調(diào)用程序時(shí)控制的。這種設(shè)計(jì)范式與現(xiàn)代系統(tǒng)截然不同,形成了真正的認(rèn)知鴻溝。
這種系統(tǒng)架構(gòu)帶來的直接后果是,即便能夠讀懂 COBOL 代碼,你依然無法理解它是如何工作的。正如網(wǎng)友所說,目前美國大量關(guān)鍵系統(tǒng)仍在使用 COBOL,但主流做法是用現(xiàn)代語言編寫一個(gè)新界面,這個(gè)界面仍然調(diào)用所有舊的東西,避免觸碰舊代碼,因?yàn)樘熘浪麄儠?huì)破壞什么隨機(jī)的東西。
針對(duì) DOGE 團(tuán)隊(duì)重建 SSA 系統(tǒng)的計(jì)劃,社交媒體上幾乎呈現(xiàn)一邊倒的負(fù)面評(píng)價(jià),大家普遍認(rèn)為“成功的可能性為零”。而且,這些評(píng)論無一例外地都獲得了大量點(diǎn)贊,可見大家對(duì)此事的看法高度一致。

“DOGE 團(tuán)隊(duì)的計(jì)劃,在我看來,注定會(huì)以失敗告終。我曾多次成功領(lǐng)導(dǎo)類似項(xiàng)目,深知其中的復(fù)雜性......DOGE 團(tuán)隊(duì)中,沒有人具備承擔(dān)如此重任的資質(zhì)。他們的計(jì)劃,充斥著麥肯錫式的夸夸其談和技術(shù)專家的想當(dāng)然,成功的可能性幾乎為零。”
從用戶和所有者(也就是我們這些小人物)的角度來看,這里成功的機(jī)會(huì)幾乎是 0.00000000000%。我剛剛遷移了一個(gè)類似的系統(tǒng),盡管它規(guī)模更小。我遷移的那個(gè)是一個(gè)主機(jī)系統(tǒng),大約有 1000 萬行代碼。祝你好運(yùn),Elon。

看到這個(gè)標(biāo)題,老程序員和 IT 專家們都嚇傻了:“DOGE 想在幾個(gè)月內(nèi)重寫 SSA 的全部代碼!”[SSA 的代碼是用 COBOL 寫的。那幫幼稚的 DOGE 團(tuán)隊(duì),根本看不懂,更別說重寫了。]
很多網(wǎng)友都認(rèn)為 DOGE 團(tuán)隊(duì)在幾個(gè)月時(shí)間里重建根本不切實(shí)際,要想妥善完成這項(xiàng)任務(wù),至少需要一支由數(shù)百名經(jīng)驗(yàn)豐富的專家組成的團(tuán)隊(duì),并且耗時(shí)數(shù)年。
更有網(wǎng)友爆料,根據(jù) USAToday 的報(bào)道,馬斯克計(jì)劃在今年春天離開 DOGE 團(tuán)隊(duì)。這意味著,如果 SSA 系統(tǒng)重建成功,他可以獨(dú)攬功勞,甚至名垂青史,而一旦項(xiàng)目失敗,他也能全身而退。這位網(wǎng)友不禁感嘆:“馬斯克真是個(gè)天才!”
參考鏈接:
https://arstechnica.com/tech-policy/2025/03/what-could-possibly-go-wrong-doge-to-rapidly-rebuild-social-security-codebase/
https://www.reddit.com/r/technology/comments/1jlwil2/doge_plans_to_rebuild_ssa_codebase_in_months/
聲明:本文為 整理,不代表平臺(tái)觀點(diǎn),未經(jīng)許可禁止轉(zhuǎn)載。





京公網(wǎng)安備 11011402013531號(hào)