Colin Percival 希望 AWS 有 us-chaos-1 (us-fail-1?)

Daily Hacker News 上看到的東西,這個網站會每天會演算法整理出 Hacker News 上十則消息 (就如同名字),對於還不錯,這次有趣的是這個網站的作者 Colin Percival 自己在 Twitter 上講的東西也被收進去了...

他目前的主力服務應該是 Tarsnap,主打的是只有使用者有 key 能解開的雲端加密備份服務。這個服務放在 AWS 上,所以才會有這則:

希望有個三不五時就壞掉的環境,可以確保平常在設計架構上就會考慮到不穩定性。

這讓我想到 NetflixChaos Monkey,可能還是不夠用?

機器層應該可以用 Chaos Monkey 搞定,網路層應該可以在 PF 或是 iptables 上面模擬出來?雖然每台都得設定就是了... 目前沒有想到好方法的應該是 EBS 與 cloud service 的部份 (像是 RDS),也許前面架個很容易壞掉的 TCP proxy 模擬?

另外馬上就看到下面有幾個人在偷婊其他 cloud service XDDD

所以 Netflix 也往 Google Cloud Platform 嘗試了...

看到「Netflix Security Monkey on Google Cloud Platform」這則消息,看起來 Netflix 也往 Google Cloud Platform 在嘗試了。

Netflix Security Monkey 本來是對 AWS 分析,現在則是開始支援 GCP (雖然還在 beta):

Security Monkey monitors policy changes and alerts on insecure configurations in an AWS account. While Security Monkey’s main purpose is security, it also proves a useful tool for tracking down potential problems as it is essentially a change tracking system.

Perl 上的 Monkey Patch

這整個週末都在跟 Net::DNS 奮戰 edns-client-subnet,遇到模組內的一小段程式有 bug,先用 monkey patch 硬上,之後再看看要怎麼丟 patch 回 upstream。

monkey patch 的方法主要是參考「How can I monkey-patch an instance method in Perl?」這邊提供的方法而來的。

由於實際的行為是 subroutine redefined (會產生警告訊息),所以要局部關掉 warnings,然後再把整個 subroutine 換掉:

use BugPackage;

{
    no warnings;
    local *BugPackage::bug_function = sub {
        # new code
    };
}

這樣可以在不修改原始模組程式碼的情況下抽換。

Netflix 的 Chaos Monkey

Chaos MonkeyNetflix 丟出來的工具,這個工具的目的是希望建立超高可靠度的系統。方法則是沒事就亂關 AWS 上的 instance:「Chaos Monkey released into the wild」。

基本的想法是這樣:

  • 在 AWS 上的系統容錯率要超高。
  • 上班時間爛掉比凌晨三點被 call 起床好。
  • 所以平常就放火測試容錯率到底夠不夠高,方法就是隨機關 instance。

照 Netflix 的說法,他們不僅在開發環境測試,也在正式環境測試。利用 Chaos Monkey 看看 failure 的結果是否如預期。

Netflix 甚至建議可以排成每個上班日都隨機跑一跑:

The service has a configurable schedule that, by default, runs on non-holiday weekdays between 9am and 3pm.

只有在爆炸機率超高的系統上,設計師才會在意 failure 的問題...