Soft_Job 板


LINE

這篇比較偏心得分享,沒有太多的技術細節。 Medium好讀版: https://tinyurl.com/yy8auqdy PressPlay好讀版: https://www.pressplay.cc/link/82A2CAD5C4?oid=829D3F275F PressPlay平台服務在2016年問世,一直放在AWS上,直到2018年中才搬遷至GCP上。 至今也一年了,讓我們回顧一下這幾年PressPlay的主機的成長過程吧。 # AWS時期 PressPlay草創初期資源有限人力有限,只有一台伺服器運行所有的服務,一台資料庫, 主機在東京AWS,CDN是用Cloudflare的CDN,服務也挺單純的,伺服器上只有網站服務, 然後用戶上傳圖片也放在這台主機上,裡還有一個跑定期扣款的Cron服務, S3的用途是暫時放上傳的影片,為什麼是暫時呢?因為我們的影片是使用Vimeo服務, 所以我們上傳到S3只有一個功用,就是讓Vimeo可以抓影片,過了三天影片就會被刪掉。 配置圖大概是長這樣子: 最早期的AWS主機配置: https://tinyurl.com/yyfmglex 那時候每天大概幾千人造訪而已,機器都應付得來。 然後到了2017年3月情況就開始不一樣了。囧星人專案上線帶來一波流量, 然後我們在3月下旬作了第一次的改版,流量開始多起來了, 高峰期甚至到了一天兩萬多人進站。 2017–01–2017–03 GA數據: https://tinyurl.com/y6jnd5ym 我們在2018–01到2018–06搬家之前,平均每天進站人數大約在25,000至30,000人左右, 一台Server還蠻緊蹦的,最後決定搬家,搬到Google Cloud Platform(GCP)。 這是搬家前最終的伺服器配置。 AWS後期的主機配置: https://tinyurl.com/yx9tl8yl # 為什麼要搬到GCP 或許有人會問「AWS用得好端端的幹嘛搬家呢?」我們選擇GCP的原因有幾個原因: * 價格比AWS便宜 * 地點在台灣,速度快 * AWS介面很醜(我承認我是外貌協會) 公司草創時期資金沒有那麼多,選擇機器都是以省錢、高C/P值為目標。 PP的機器建在AWS的時候,CDN是Cloudflare,雖然我們買的是Pro方案(USD 20/月) 但連線的節點是在洛杉機。也就是說用戶要連線PressPlay的網站, 用戶的連線會先台灣出發,到達洛杉機Cloudflare的機房, 然後連線到東京AWS機房取資料,然後再經過洛杉機才回到台灣。 開個網站就要跑遍大半個地球,再加上PressPlay一開始網站還沒有優化連線數或 圖片size,所以以一個從來沒進入過PressPlay的人,從連線到完全跑出網站, 要90秒左右... GCP的費用大約是AWS的六折左右,而且在AWS都沒有作HA(High Availability), 就算有也是人品HA。因此我們常常一爆量主機攤瘓了,光2018上半年就平均1–2月 就一起攤瘓事件。GCP的設定簡單,就連我對配置伺服器沒有很熟都可以輕鬆入門, 開啟CDN也是一個鍵就完成了,在人力和相關知識都缺乏的情況下,選擇GCP還蠻不錯的。 於是我們在2018年4月的時候,決定搬遷到GCP。 # 搬遷的困難 就是人!因為公司內部缺乏熟悉伺服器管理的人,於是我們就想找一個人來管理伺服器、 調整效能、管理辦公室網路和設備,然後進公司來的第一件事就是協助我們搬伺服器。 我們找到一位從業很久的資深工程師,他一進來看到我們公司的網路架構、伺服器架構 跟本是初學者等級,來了五天就跑了,說是不想從那麼基礎的東西做起。 那麼怎麼辦呢?只好我硬上了。雖然GCP操作簡單,但是有關Server調校、 資料庫調校這些我沒有什麼經驗,而且這一次要大調架構,我的要求: * 讓我們可以撐住爆量的時刻,機器不要掛。 * 並加速網站的運行速度。 * 伺服器狀態的監控機制。 * 備援機制,不要伺服器倒一台就服務全死。 因為GCP比AWS便宜多了,所以機器比較能放心的開,為了未來PressPlay發展, 我們是以3年內不需要再次優化架構的前提之下去做規劃,原本一台網站主機 就可以打天下的配置,擴充成APP、Web各兩台,另外再把負責金流的服務獨立出來, 也是做成兩台,然後由Load Balancer來分配流量,就算APP死一台機器還有一台會 繼續服務,就算WEB全死,但APP還是可以用。 還好有在6月有一位資深的後端工程師加入,我和他經過一整個月的試驗、調整、搬遷, 上線前一天我召集了幾位工程師一起協助搬資料和測試,老闆還以來辦公室拿東西為藉口 送宵夜來,揪甘心~ 終於在2018–06–29 正式上線了!!這是搬到GCP時的配置圖: https://tinyurl.com/y6z53rxu # 搬到GCP之後…? 2018–06–29上線早上八點,網站就炸了!! 原因是主機掛載Google Storage時的參數錯誤,讓所有資料夾和檔案清單必須讀完 才能正常服務,半夜搬家在測試時也是小貓兩三隻在測試所以沒什麼問題, 早上八點的尖峰時間一到,大量的人潮湧入PressPlay,I/O卡住,導致服務停擺。 那兩天我的睡眠時間只有三個小時,不過當一切都搞定且正常運行時,疲憊的感覺 全部冒出來了,於是我就伴隨著成就感一起入睡。 換到GCP後,PressPlay有變得比較好嗎?有的,當時我們還做個記錄: 1. 台灣地區網頁讀取速度之影響 6/30日(六) 比較6/2(六) 網頁讀取 時間從3.9秒,提昇至2.78 (台灣地區) ,提昇28.58% https://tinyurl.com/y3lbuzbr 2. Ping值之影響從平均100ms提昇至10ms https://tinyurl.com/y6spu8z6 3. 完成網站瀏覽取樣報告比較 6/29–6/30 對比上週 6/22–6/23 各式的載入、連線時間、回應時間都大大地的減少。 https://tinyurl.com/y5mnpfvx 搬完GCP後從此就高枕無憂了嗎?錯了,挑戰開始來了。 2018–08–23攻擊事件 當天晚上我們受到DDOS攻擊,我們抓到大約200多個國外IP向我們進行攻擊, 這些IP應該都是跳板。之後我們在兩個小時之內,把主機關掉、換IP, 然後建置fail2ban和nginx的防DDOS機制止血,隔天我們進行了檢討, 我們需要更明確的自動監測回報機制。 被攻擊的隔天PressPlay粉絲團所發的聲明: https://tinyurl.com/y3wmyojk 於是我們就建置了監控主機的功能,只要CPU使用量超標,或是一段時間主機沒有回應, 都會跳出通知 PressPlay內部監控Channel: https://tinyurl.com/yxtnnqaa 後續還有幾次攻擊事件,不過因為前一此的事件我們作了防護措施,所以只是跳跳通知, 然後隔天去看Log而已,用戶、工程師和老闆都睡了好覺。 2019–03–31阿滴英文愚人節活動爆衝 PressPlay的GA在2019年有個顯著的peak,就是阿滴英文愚人節活動,在我們沒有準備好 的情況之下,當天衝進快十萬人,大約是平常日的4倍量。我記得當天我還在家裡一面 吃鹹酥雞一面看動物朋友,然後就看到「救救PressPlay」頻道一直叫,然後老闆一直 在戳我,才發現這起事件。 還好架構有規劃好,整個活動順利的結束,Server沒有爆炸,可喜可賀。 https://tinyurl.com/y52eekx2 因為這次的虛驚,所以我們就立刻進行一個我很想要玩的東西:Auto Scaling。 10天後,也就是4月9日,Auto Scaling正式上線。之後我們更能高枕無憂地渡過 每一個動畫夜。 這個架構運行至今都沒什麼問題,下面這個是目前PressPlay的主機架構。 現今PressPlay主機架構: https://tinyurl.com/y3nqcpdj # PressPlay功能現在與未來 PressPlay目前產品功能是著重在數據開發和應用,今年招募兩位數據背景的RD, 開始著手進行訂閱者的行為,為創作者帶來新的收益和減少流失。 或許大家會注意到我們網站開始有推薦的版位了,首頁的訂閱專案排名也不是像以前 一樣單純用金額去排名,而是透過演算法算出綜合性的指標。 我相信創作者們想知道算法是怎麼算的,在這邊只能透露創作者越投入在經營專案、 訂閱者的互動越深就能得到更好的排名。 目前我們也在密謀一個對創作者更有實質幫助的功能,預計在八月會問世, 還有秘密策劃第三條產品線,也即將在九月和大家見面。 未來PressPlay工程部會持續地深化你所見到的一切,和我們在麥塊中的世界。 最後,歡迎按讚追蹤我們的FB粉專:https://www.facebook.com/PressPlayTech/ --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.49.142 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Soft_Job/M.1562948175.A.FB1.html ※ 編輯: UniFish (1.34.49.142 臺灣), 07/13/2019 00:23:26
1F:推 crossdunk: 推 gcp 自動擴展太好設定了07/13 00:24
2F:→ crossdunk: 另外log 可以用stackdriver 07/13 00:26
真的!很好設定。 我們有用stackdriver,我們的自動監控的通知是利用stackdriver去作的 logging server我們是用來收集nginx的accesslog,還有類mixpanel的服務
3F:推 andrew8062: 寫得很詳細 滿有趣的07/13 00:40
4F:推 Nonsense8: 文筆很清晰,這種經驗心得超棒,謝謝分享!07/13 00:41
不客氣
5F:推 clamperni: AWSQQ 07/13 00:45
幫QQ
6F:推 ptta: 感謝您的分享 07/13 00:58
7F:推 Mtcat: nicenice07/13 01:05
8F:→ LonelyMan: 好奇問問,應該是 client side app 跟 load balance07/13 01:12
9F:→ LonelyMan: 串接吧?07/13 01:12
有點不太懂你的描述XD GCP load balancer是指定連線進到哪一個VM群組,我們有專門服務APP的機器 iOS/Android用戶使用PressPlay APP會連到APP Server 就連裡頭的webview開網頁也都是由APP Server服務,完全地和Web切開
10F:推 sa0124: 推07/13 01:40
11F:推 art1: 推!很棒的文章07/13 02:04
12F:→ jhnny97: 想問最後一個的Minecraft是什麼?XD07/13 02:16
你沒看到文章封面的Logo嗎?XDD 是我們部門的員工福利(?)
13F:推 b81314: 不錯 07/13 02:35
14F:推 clear919: 推!07/13 02:49
15F:推 wahaha279: 大學生研究生有機會碰這些東西嗎07/13 03:30
GCP有一年300美金的試用金額,只要有Gmail都可以使用, 任何人都可以開來玩玩
16F:推 Justie: 推07/13 03:45
17F:推 PoloHuang: 很厲害!07/13 03:47
18F:推 molopo: 推好問07/13 03:48
19F:推 p90085: 推 07/13 04:07
20F:推 wildpeanut: 推07/13 06:03
21F:推 aabbcc520: 想請教兩個問題,gcp是用那個規格(價錢)以及是否有用07/13 07:01
22F:→ aabbcc520: docker呢,謝謝07/13 07:01
現行Web & App Server是用2VCPU + 8G Ram + SSD 一台一個月大概40-50美金吧,同等級AWS要70-80美金 不過我有綁合約,一台合約價在30美金左右 我們沒有使用Docker,我們走的是效能置上路線。 不過GCP的Auto scaling需要一個範本,才能用這個範本去增開機器。 所以我們會開一台範本的主機,然後把Web & APP服務建在上面,作成範本映像檔,用它 來開機器。 這樣的概念也和Docker很像呢,只是沒有再包一層,這樣費用也比較便宜,效能也比較好 等到未來PressPlay成長到這種架構維護成本大到比使用Docker大之後, 我們再考慮使用Docker
23F:推 bheegrl: 推07/13 07:13
24F:推 jhengsiaomin: 推分享07/13 07:45
25F:推 bcew: 推 07/13 07:51
26F:推 doranako: aws規劃好應該也可以做到,gcp目前應該便宜一些07/13 07:55
是的,GCP比較便宜,而且重點是在台灣。 我們的服務目前是以台灣為主,它在台灣這個優點就很吸引人了
27F:推 robort: 推!謝謝你分享這段經驗07/13 08:20
28F:推 googoo1102: 感謝分享07/13 08:32
29F:推 f496328mm: 推推07/13 08:53
30F:推 menShow: 感謝分享07/13 08:54
31F:推 ice0803: 感謝分享07/13 08:58
32F:推 PHEj: 推推07/13 09:16
33F:推 ukuk666888: 推 很棒 07/13 09:25
34F:推 highjumper: 感謝分享 另外想請問新架構上線前有做過stress testin07/13 09:34
35F:→ highjumper: g或load testing嗎?直接爆炸還蠻恐怖的QQ07/13 09:34
有用ab打一下,不過最近在想clone一組架構來測試, 但還沒有決定哪個時辰要來做
36F:推 maxqq: 話說文中的那個架構資深工程師根本就是菜鳥吧07/13 10:18
37F:→ maxqq: 來就是要做事,不是因為全部弄好,在那邊翹腳喝咖啡吧07/13 10:19
38F:→ maxqq: 應該是完全不懂 gcp+aws 面試常遇到這種07/13 10:19
39F:推 maxqq: 不過真是羨慕團隊,我老闆跟主管都沒有這種概念 07/13 10:23
40F:→ maxqq: 我只能默默的做,做好了也沒成就感07/13 10:23
41F:推 maxqq: 第一句話講的那個資深工程師,是指很快澇跑那個07/13 10:27
哈哈哈~我可以確定他不是菜鳥啦。 但在知道架構的前提之前答應了offer但又不想做,我也不知道究竟發生什麼事XD
42F:推 C10202: 謝謝分享07/13 10:27
43F:推 chocopie: 推分享07/13 10:39
44F:推 shter: 原來 GCP 在台灣又比較便宜,感謝分享07/13 11:05
45F:推 leveger0903: 推07/13 11:16
46F:推 bonuswhoring: 當初有考慮過spot instance嗎 比gcp合約價還便宜07/13 11:41
GCP也有喔,超級便宜,不過目前還沒試過。 目前我們的web & app server突然被關掉重啟也不會影響服務, 看來蠻適合的,找個良辰吉時來試試看好了
47F:推 yaya517: 感謝分享07/13 11:50
48F:→ alan3100: 你選AWS東京本來就特別貴吧 如果又沒RI更貴07/13 12:01
是的,所以我們S3有挑便宜的地區,我進公司前就是放在AWS東京了 要搬乾脆索性搬到台灣,為了速度 & $$
49F:推 frank910138: 謝謝分享07/13 12:04
50F:推 avans: 推經驗分享07/13 12:05
51F:推 NeCool: 推07/13 12:06
52F:推 lairrol: 換架構真的很刺激~推心得!07/13 12:23
真的,一生難有的機會
53F:推 jack529: 讚讚07/13 12:41
54F:推 bronx0807: 推07/13 12:45
55F:推 alotofjeff: 是因為價格嗎?aws也有CDN節點在台灣啊?07/13 12:47
56F:→ alotofjeff: 原來的架構還要付兩次錢(aws>cloudflare>user)07/13 12:49
57F:→ alotofjeff: aws到cloudflare這段應該超貴的07/13 12:49
58F:→ alotofjeff: 不太懂用cloudflare的好處在哪裡。07/13 12:50
clodflare的proxy CDN是小型服務首選,而且CDN流量是吃到飽,而且防DDOS, 一個月20米金很佛!!哪家CDN可以如此的省錢啊!! 估算下來我們用aws CDN,都會超過100米金。對於草創初期,都是能省則省。
59F:推 ntddt: 狂推超詳細心得文07/13 12:56
60F:推 sc113943: AWS和GCP不是都有推自家防DDoS的產品嗎07/13 13:37
當時GCP的Cloud Armor還在beta,怕怕的不敢用,fail2ban擋著先
61F:推 vn509942: 感謝分享07/13 13:42
62F:推 ssivart: 看起來是GAE 如果用GKE會更省07/13 13:50
是GCE喔,GAE貴貴,而且不想綁在不好轉移的架構上。 萬一哪天有更棒的服務商出現了,綁太死移不走
63F:推 dreamnook:07/13 13:53
64F:推 crossdunk: gcp的gke跟用設定的gce一模一樣07/13 14:41
65F:推 crossdunk: cloudflare一個月不是20美金而已嗎07/13 14:45
偷說,20米金的方案節點在LA,然後我以為商務方案(200米金)會可以用台灣節點 直到我寫信去cloudflare問說台灣節點要用哪個方案。 他們回覆要用企業方案,一個月5,000米金!!夭壽啊!!!!
66F:推 victor21813: 推推 這種心得文很有觀看價值~ 07/13 14:48
67F:推 n960321: 推推07/13 15:54
68F:推 asdg62558: 推 感謝經驗分享07/13 16:03
69F:推 moon2519: 推一個,求了解ddos那段細節07/13 16:06
哈哈哈,細節我記不太得了。 基本上是我們另外一個後端工程師處理的。
70F:推 iamkcyao: 推07/13 16:10
71F:推 exeex: 推07/13 17:22
72F:推 louis70109: 看來是時候來去GCP了07/13 18:15
來唷(招手
73F:推 cirlmai: 用心整理給推07/13 19:23
74F:推 Arctica: 推07/13 19:57
75F:推 clamperni: 很珍貴的分享07/13 20:35
76F:推 tvbic: 完全沒聽過這網站 07/13 21:11
77F:推 good2513: 可以考慮 cloudrun or gke~07/13 21:11
78F:推 yougigun: 感謝分享07/13 21:36
79F:推 alotofjeff: 印象中aws用自家cdn是不收流量費的,cloudflare 再便07/13 22:51
80F:→ alotofjeff: 宜,應該也省不過這一段免費07/13 22:51
81F:→ alog: 企業方案印象大約台幣10萬出頭多,怎麼變5000美金惹XD 07/13 23:27
Ya~網上眾說紛云,我就直接寫信給Cloudflare問個清楚, 答案的確讓我倒抽口氣。不過十萬出頭也很夭壽。 現在我們每月主機全部加一加支出連一半都不到啊 XD
82F:→ bluesapphire: 感覺很有趣,讚07/13 23:27
83F:→ alog: 樓上,Cloudfront 代理像S3的部分其實都免費,但你CDN到外網07/13 23:27
84F:推 a2323269: 推07/13 23:28
85F:→ alog: 到外網還是要算$$,至於Cloudflare要看你的快取策略怎麼安排07/13 23:28
86F:→ alog: 平常使用應該會比用 Cloudfront 省。看報表/帳單就知道了07/13 23:35
87F:→ Hevak: @alotofjeff 看你用量,省得過的機率其實不低,因為 AWS 自07/13 23:48
88F:→ Hevak: 家的 Cloudfront 真的太貴了,不過還是要自己看報表算最準07/13 23:49
89F:→ Hevak: Cloudflare 有機會省主要是差在流量是固定費率吃到飽07/13 23:50
90F:→ robler: 公司這麼操是有沒有老實給加班費阿? 工時有沒有違法超時阿07/14 11:00
我們公司加班費和補休都是照實報照時給~ 有時候工程師不好意思報太多還會被我退件說報太少。 伺服器搬家前天我們分成兩組:搬家組和維護組。 搬家組不用來上班,當晚九點集合。辦完後就早上五六點,然後回家睡覺,白天換維護組 接手。 搬家組就在家睡覺。因為我很討厭操勞的生活,所以我自然地會要求組員們不能操勞,該 休就休,改報加班就報加班。
91F:推 qq076qq076: 推推 07/14 11:08
92F:推 alotofjeff: 看起來是我錯了,的確照牌價cloudfront不一定能省07/14 11:11
93F:推 alotofjeff: 有些用量大的能談Cloudfront 價格,才能比較省07/14 11:13
94F:推 xam: 我也覺得跑掉的那個工程師資歷是在維護>開發,不適合當頭07/14 11:57
95F:推 sharku: 推整理 那麼實用的分享竟有人只注意工時有沒有違法07/14 12:13
哈哈哈,這個也很重要,我也很感謝公司能不畏懼財務的壓力,能讓我們找正常且符合人 性的方式工作。 也因為我們有好好的休息,許多創意或是複雜的東西,我們都有足夠精神來實現。
96F:→ robler: 我覺得勞工的權益和健康比這些所謂的"分享"重要太多了 07/14 16:27
97F:→ robler: 會覺得工時有沒有違法不重要的人我還覺得比較可憐 07/14 16:29
98F:→ robler: 大概是被洗腦成那種覺得一天工作16小時就可以成功的人吧 07/14 16:30
99F:推 sharku: 不知道樓上受過什麼刺激 但我們公司一天規定工時只有5小時 07/14 21:04
100F:→ sharku: 本來還有點想換到AWS 看到這篇受益良多 07/14 21:09
101F:推 master1x4: 感覺可以之後可以試kubernetes啊 07/15 18:19
102F:→ master1x4: Skyscanner之前用k8s然後prod全部用spot instance超狂 07/15 18:20
103F:→ master1x4: https://www.youtube.com/watch?v=99nNHsbwBpg 07/15 18:21
104F:推 showgunLa: 推,寫的很棒棒 07/16 18:15
105F:推 genius945: 推 很詳細的歷程 感謝分享 07/17 00:40
106F:推 Csongs: 弱弱的問 右邊的minecraft是遊戲的minecraft? 07/17 03:04
是啊 XD
107F:推 jay123peter: 推 07/18 22:39
108F:推 t800516: gcp介面真的比較好用 07/20 00:39
※ 編輯: UniFish (59.127.82.251 臺灣), 04/24/2020 14:20:19







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:iOS站內搜尋

TOP