![]()
AWS本月結(jié)束了對RDS上PostgreSQL 13的標準支持。客戶如果想繼續(xù)使用受支持的數(shù)據(jù)庫(AWS積極鼓勵這樣做),需要升級到PostgreSQL 14或更高版本。
這個決定是合理的,因為PostgreSQL 13在去年底已達到社區(qū)生命周期終點。
PostgreSQL 14于2021年發(fā)布,默認采用更安全的密碼認證方案(SCRAM-SHA-256)。然而,這恰好會導(dǎo)致AWS Glue(他們的托管ETL服務(wù))出現(xiàn)故障,因為該服務(wù)無法處理這種認證方案。如果你按照AWS自己的安全指導(dǎo)升級RDS數(shù)據(jù)庫,AWS自己的數(shù)據(jù)管道工具會響應(yīng)"Authentication type 10 is not supported"錯誤并停止工作。
鑒于這兩個服務(wù)通常都部署在大多數(shù)公司稱為"生產(chǎn)環(huán)境"的環(huán)境中,這種情況相當(dāng)糟糕!
廢棄支持并沒有創(chuàng)造這個問題,它只是移除了避免一個已經(jīng)存在五年問題的能力,除非你承擔(dān)額外的維護負擔(dān)或支付擴展支持費用。
技術(shù)問題的核心在于:當(dāng)你遷移到RDS上更新版本的PostgreSQL時,Glue的連接測試基礎(chǔ)設(shè)施使用的內(nèi)部驅(qū)動程序早于新認證支持。"測試連接"按鈕——你在將設(shè)置應(yīng)用于生產(chǎn)數(shù)據(jù)之前點擊以驗證設(shè)置是否工作的按鈕——根本無法正常工作。AWS支持論壇上的社區(qū)專家三年前就承認"測試器正在等待驅(qū)動程序升級",并向用戶保證爬蟲使用自己的驅(qū)動程序,應(yīng)該能正常工作。但同一線程中的用戶報告說爬蟲也會失敗。在RDS PostgreSQL上運行Glue是數(shù)據(jù)工程的基礎(chǔ)模式,不是邊緣案例——這是AWS讓其陷入失修狀態(tài)的一條成熟路徑。
這種不兼容性自2021年P(guān)ostgreSQL 14發(fā)布以來就已為人所知。PG13的廢棄時間表也是提前宣布的。RDS和Glue兩個團隊都應(yīng)該跟蹤行業(yè)發(fā)展動態(tài)。但顯然,兩者都沒有關(guān)注彼此的動向。
對這種情況發(fā)生原因的善意解讀也是正確的:AWS擁有數(shù)萬名工程師,組織成數(shù)百個半自主的服務(wù)團隊。RDS團隊按照RDS生命周期推出廢棄計劃,Glue團隊按照Glue路線圖維護驅(qū)動程序依賴關(guān)系,而沒有人明確負責(zé)他們之間的差距。客戶在生產(chǎn)環(huán)境中發(fā)現(xiàn)不兼容性,通常是在不方便的時間。
這不是陰謀,因為AWS缺乏實施陰謀所需的內(nèi)部凝聚力。這也不是精心構(gòu)建的收入增強機制,因為與它產(chǎn)生的客戶不滿相比,擴展支持收入幾乎肯定是AWS資產(chǎn)負債表上的舍入誤差。相反,這只是組織復(fù)雜性在發(fā)揮其固有作用。這就像你公司內(nèi)部工具無法互相通信的原因一樣;AWS只是在一個規(guī)模上這樣做,其影響范圍是別人的生產(chǎn)數(shù)據(jù)庫。跨越多個碰巧共享母公司的數(shù)十億美元業(yè)務(wù)邊界的集成測試確實很困難。沒有人醒來后決定破壞Glue。它從工廠就是這樣的。
我想明確表示我真的相信這一點,因為我即將描述的替代方案與意圖無關(guān)。
善意解讀的問題在于它無關(guān)緊要
如果你在凌晨2點盯著環(huán)境中損壞的管道,原因是學(xué)術(shù)性的。你需要修復(fù)。AWS提供了三種解決方案,但都很糟糕。你可以將數(shù)據(jù)庫的密碼加密降級到較舊、不太安全的標準:即你剛剛按照AWS自己的建議升級離開的那個標準。你可以自帶JDBC驅(qū)動程序,這會禁用連接測試,并可能不支持你想要的所有功能。或者你可以將ETL工作流重寫為Python shell作業(yè)。
每個出口都意味著放棄托管服務(wù)的整個價值主張——這可能就是你陷入這種困境的原因——或者撤銷你剛被告知要做的安全改進。
對于為了避免這個特定問題而繼續(xù)使用PG13的客戶,擴展支持現(xiàn)在會自動運行,除非你在集群創(chuàng)建時選擇退出——這是一個容易錯過的細節(jié)。前兩年每個vCPU小時收費0.10美元,第三年翻倍。一個16-vCPU多可用區(qū)實例僅擴展支持費用一年就接近30,000美元。這不是敲詐。但這是賬單上出現(xiàn)的數(shù)字,來自一家同時控制修復(fù)問題時間表的公司,而且所有客戶響應(yīng)選項都很糟糕。
AWS不需要進行敲詐。他們只需要足夠大,使結(jié)果與敲詐無法區(qū)分。
這種模式不是AWS獨有的,也不會消失。每個主要云提供商——實際上,每個主要技術(shù)提供商——都是半自主團隊的投資組合,其路線圖偶爾會在客戶環(huán)境中發(fā)生沖突。這將再次發(fā)生,涉及不同的服務(wù)、不同的認證協(xié)議和不同的計費項目。問題不是組織結(jié)構(gòu)圖是否會產(chǎn)生另一個這樣的差距。它會的。問題是差距出現(xiàn)后會發(fā)生什么:響應(yīng)看起來像問責(zé)制——在廢棄截止日期之前而不是之后承認不兼容性——還是看起來像聳肩和三個付費替代方案?
永遠不要將可以用一個非常大的組織結(jié)構(gòu)圖充分解釋的事情歸咎于惡意。只是別忘了檢查發(fā)票。
Q&A
Q1:PostgreSQL 14升級后為什么會導(dǎo)致AWS Glue停止工作?
A:PostgreSQL 14默認采用SCRAM-SHA-256認證方案,但AWS Glue的連接測試基礎(chǔ)設(shè)施使用的內(nèi)部驅(qū)動程序不支持這種新認證方式,會返回"Authentication type 10 is not supported"錯誤。
Q2:AWS為這個兼容性問題提供了哪些解決方案?
A:AWS提供三種解決方案:將數(shù)據(jù)庫密碼加密降級到舊標準、自帶JDBC驅(qū)動程序(會禁用連接測試)、或?qū)TL工作流重寫為Python shell作業(yè)。但這些方案都需要放棄托管服務(wù)的價值或撤銷安全改進。
Q3:PostgreSQL 13擴展支持費用是多少?
A:擴展支持費用為前兩年每個vCPU小時0.10美元,第三年翻倍。一個16-vCPU多可用區(qū)實例僅擴展支持費用一年就接近30,000美元。
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺“網(wǎng)易號”用戶上傳并發(fā)布,本平臺僅提供信息存儲服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.