微服務故障測試
在 微服務從業者峰會 上, Kolton Andrus 在 演講 中指出,故障測試是運行微服務的一個關鍵部分。你應該確定微服務的行為同預期一樣,以避免停機。
前Netflix軟件工程師Andrus將故障測試比作疫苗,為了產生免疫力,向體內注射少量有害的東西。在Andrus看來,這非常符合微服務領域。為了查看微服務的行為,我們向其中注入少量對微服務有害的東西,然后設法建立免疫。
故障測試的缺點是它可能造成影響。它會帶來破壞或者造成一些客戶影響,但是,如果最終的結果是最壞的事情沒有那么壞,而最好的事情相當好,比如,阻止了停機,那么他認為,這種缺點是可控的。
做故障測試,Andrus更喜歡結合故障場景,考慮什么會出錯,系統怎么會出錯。他認為,提出類似“我們擔心什么?”或“會出什么錯?”這樣的問題,多少會有助于更好地做準備。考慮故障發生的可能性,就可以發現基礎設施中應該投入時間的常見事件。不過,他指出,我們不可能什么都準備好,故障總會出現,我們無法看到它們到來,但是,我們要相信,做好準備會讓我們更有能力緩解問題。
另一個Andrus認為有助于優先級排序和風險評估的問題是“出錯成本是什么?”。然后,可以執行一個成本-收益分析,不僅要考慮會出什么錯,而且還要考慮什么可能出錯,這有助于決定在哪里投入時間和金錢以獲得最好的回報。
Andrus還強調了在生產環境中進行測試的重要性。如果只在測試環境中測試,那么生產環境的配置、網絡和硬件都沒有測試過,他援引了Amazon Web Services(AWS)著名工程師 James Hamilton 的一段話:
那些不愿意在生產環境中進行測試的人對他們的服務能夠在故障情況下繼續運行沒有信心。不做生產環境測試,會在需要恢復的時候發現恢復失效了。
如果你做了大量的工作,并創建了緩解問題的方案,但未能在生產環境中進行測試,那么你稍后可能會發現它們在生產環境中無效或者導致故障更糟糕,那可不是一個讓人身在其中倍感愉快的境地。
查看英文原文: Failure Testing of Microservices
來自: http://www.infoq.com/cn/news/2016/03/microservices-failure-testing