台北市長暨候選人柯文哲小額群眾募資網站 teamkp.tw 今天正式上線,經由擴散率超高的柯文哲粉絲專頁貼文後,立即湧入數千位捐款者進到網站,但網站的穩定度擋不住支持者的熱情,許多民眾紛紛遇到當機狀況,頻頻出現 500、502、504 等當機現象,連Cool3c主編也在臉書抱怨此事。
我本人也在競選幕僚貼文上,呼籲大家吃完飯再回來捐款,不要把網站擠爆了。李組長眉頭一皺覺得不對,是不是有更好的網站建置方法,才能讓超人氣的科P網站穩穩妥當呢?因為這樣馬上在Cool3c的工程群組上詢問幾位工程師,請大家幫我提出好的網站建置提案,讓夠讓熱情的支持者們能順利完成捐款。
從 Cloudflare CDN 服務解
首先從 Whois 資料查詢,發現 teamkp.tw 網站是由一位國立清華大學計量財務金融學系邱同學所申請,網址 ISP 從 GoDaddy 來申請,DNS 則是 Cloudflare。
原來該網站有走 Cloudflare,這是一個許多網站都樂於使用的 CDN(Content distribution network)服務,簡單來說就是網站的緩衝區,使用者連上柯P網站其實是連上 Cloudflare,讓這個巨人幫忙擋一槍,而且 Cloudflare 是單一費率無限流量使用,以Cool3c來說只要每個月付 200 元美金,就可以使用其進階服務,為Cool3c網站每月數百萬瀏覽頁面的流量擋下不少。
如果 teamkp 有用到 Cloudflare,那為何還是被打掛呢?可以調整成直接開 cache everything,或者寫規則讓他強制快取所有頁面,以下是Cool3c工程師們提出解法:
★www.teamkp.tw
Ping www.teamkp.tw [104.20.190.48]
★可行處理
.由於畫面大多是靜態資料,建議做快取 (www.teamkp.tw)
> HTML檔案靜態快取
> CDN快取
> Expires header
捐款網站要做Auto-Scale
上面這樣解掉後,只有會變的品項會被快取,直到下次頁面更新例如上一次快取是100個支持者,再到下一次快取前都是100位,其他都可以讓使用者安然上到網站。但後面的捐款頁面金流服務就比較麻煩了,teamkp 使用了 AWS ,可能還會卡上金流(台新銀行金流)部分的伺服器:
★donate.teamkp.tw
Ping kpdonate-alb-1039184351.ap-northeast-1.elb.amazonaws.com [13.112.93.28]
Elastic Load Balancing
提議的解法如下:
.實際募資網站,建議伺服器做 Auto-Scale (donate.teamkp.tw)
> AWS Auto Scaling
> Google Kubernetes Engine
> Azure 自動調整
> 看起來應該有做,那建議上線日提高基本數量
.避免金流塞車,可以採先訂票後付款方式
> 請見 KKTix
> 如果各項目是有上限的話
以上只是拋磚引玉,其他工程界的夥伴們提出更好的解法,如果能變成一個網站乘載流量的SOP就更好,並提供給其他政治候選人作為參考,畢竟到年底競選旺季,各大候選了網站會陸續出爐,讓各個支持者能夠順暢瀏覽並有各樣互動行為,也是好事一樁囉!
柯P有這樣專業就不會做市長而是一位專家級DEVOPS.