<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          上云上的差點(diǎn)破產(chǎn)是什么體驗(yàn)?

          共 2655字,需瀏覽 6分鐘

           ·

          2021-02-26 18:26

          前言

          2020年,很多小的初創(chuàng)公司因?yàn)橐咔榈脑?,紛紛倒閉關(guān)門,哪怕是勉強(qiáng)支撐的也大多是一蹶不振瀕臨破產(chǎn)。

          有一家名為Milkie Way的美國小公司,沒有因?yàn)橐咔槭艿接绊?,本該是大展宏圖之際,卻差點(diǎn)被自己坑的申請破產(chǎn),這到底是怎么一回事呢?我們一起來看下吧。


          這家Milkie Way是一個僅僅擁有8人團(tuán)隊(duì)的初創(chuàng)公司,創(chuàng)始人Sudeep Chauhan曾在谷歌工作,他們公司的作品https://announce.today 服務(wù)是一款類似于自動發(fā)布各種警告信息,包括地震、海嘯、各類事件、各類新聞的安全通知平臺,隨著疫情的發(fā)展,線上發(fā)布各種公告也讓他們看到了大展拳腳的最佳時機(jī)。但是沒想到的是因?yàn)閮?nèi)部測試期間的一些小疏忽,他們收到的是一紙 72000 美元(約 47 萬人民幣)的天價賬單!

          為了能更好的服務(wù)于疫情期間,Milkie Way原本準(zhǔn)備開發(fā)一個 Announce-AI 項(xiàng)目,旨在自動發(fā)布由 AI 創(chuàng)建的上述各類安全內(nèi)容。為了開發(fā) Announce-AI,他們決定使用 Cloud Functions(谷歌發(fā)布的無服務(wù)器平臺),但是很快他們遇到一個問題,Cloud Functions 的超時時間長達(dá) 9 分鐘,無法滿足他們的使用需要,于是他們轉(zhuǎn)而開始研究Cloud Run(谷歌發(fā)布的另一款無服務(wù)器服務(wù))。

          雖然當(dāng)時團(tuán)隊(duì)中的成員都對Cloud Run不太了解,但是碼農(nóng)的特質(zhì)就是在探索中不斷學(xué)習(xí),所以他們也沒覺得有什么不妥。同時因?yàn)?Cloud Run 不提供任何存儲功能,他們使用了 Firebase 作為數(shù)據(jù)庫。(因?yàn)檎军c(diǎn)規(guī)模很小,完全用不上 SQL Server 或者任何其他成熟的商業(yè)數(shù)據(jù)庫)

          Sudeep Chauhan還非常小心的對這個GCP項(xiàng)目設(shè)置了 7 美元的云資源使用預(yù)算,很多小伙伴看到這里肯定會想,那這個項(xiàng)目最多也就是用光這7美元的預(yù)算咯,Sudeep Chauhan當(dāng)時肯定也是這樣想的。

          部署完成之后他們就開始了一些常規(guī)的測試,并保持程序運(yùn)行,到了第二天,噩夢開啟!

          首先,Sudeep Chauhan收到了一封關(guān)于Firebase自動升級的郵件,然后馬上又收到了7美元預(yù)算超支的郵件,當(dāng)時他倒是沒有怎么緊張,因?yàn)樗男庞每ㄔO(shè)置了100美元的消費(fèi)限額。但是當(dāng)他登錄Google Cloud Billing之后,看到了一張價值5k美元的賬單,瞬間腦海中一片空白。

          不難想象,如果我在起床刷牙的時候看到我500額度的信用卡刷了一個幾萬的賬單出來,我也會當(dāng)場暈倒。當(dāng)時的Sudeep Chauhan一臉懵逼,真就像電影里拍攝的一樣,一方面他是完全不知道哪里在產(chǎn)生費(fèi)用,一方面這個費(fèi)用還在不停的增長,5 分鐘之后,賬單數(shù)額增長到了 15000 美元;20 分鐘后,數(shù)額增長至 25000 美元;2 個小時后,數(shù)額最終定格在 72000 美元。 是不是很夸張?

          最后一籌莫展的Sudeep Chauhan和他的小伙伴只能關(guān)閉所有的服務(wù)用來停止賬單的增長。

          第二天Sudeep Chauhan還聯(lián)系了許多律師事務(wù)所,甚至沒有一家事務(wù)所肯受理他的預(yù)約,不過也難怪,連他自己都沒搞明白這件事的來龍去脈。

          最后經(jīng)過他們徹夜不眠的調(diào)查,終于發(fā)現(xiàn)事件的因果:

          首先,F(xiàn)irebase 在提示條款中沒有提及會自動升級的情況下自動升了級

          然后,谷歌的賬單結(jié)算有著一天的延遲,導(dǎo)致他們一天后才發(fā)現(xiàn)賬單已經(jīng)欠下巨款

          再者,谷歌無視信用卡100美元的設(shè)置,導(dǎo)致天價賬單的產(chǎn)生

          最后,關(guān)鍵的關(guān)鍵,就是為了解決Cloud Run 中的超時問題,使用了 POST 請求(將 URL 作為數(shù)據(jù))將作業(yè)發(fā)送至某一實(shí)例,且并發(fā)使用多個實(shí)例以替代串行使用單一實(shí)例。這樣 Cloud Run 中的每個實(shí)例只會抓取一個頁面,所以永遠(yuǎn)不會超時。這樣做的隱患就是:

          1、不中斷的指數(shù)遞歸:由于沒有 break 語句,因此實(shí)例不知道該何時中斷。

          2、POST 請求可以具有相同的 URL。Cloud Run 服務(wù)將陷入無限遞歸當(dāng)中;而最糟糕的是,這個遞歸將呈指數(shù)增長

          從最后的數(shù)據(jù)來看,這套部署在 Cloud Run 的“Hello World”版本一共執(zhí)行了 1160 億次讀取與 3300 萬次寫入!

          1160 億次!

          所以按照Firebase 上的讀取操作成本:

          (0.06 美元 / 100,000) * 116,000,000,000 = 69,600 美元!無怪乎那么貴了

          從這個事情我們可以看到,云服務(wù)上部署了一個錯誤的算法,在完全不了解的情況下使用了Firebase,最終導(dǎo)致了天價賬單的產(chǎn)生,所以一般常識里面的一邊學(xué)習(xí)一邊開發(fā),其實(shí)是很危險的一個行為。

          尤其是在云平臺上進(jìn)行一些不確定的開發(fā)測試,云平臺像是一把雙刃劍。如果使用得當(dāng),它確實(shí)威力巨大;但如果使用不當(dāng),后果也將極為嚴(yán)重。Firebase 也不像是能夠直接學(xué)習(xí)的編程語言,它是谷歌提供的一項(xiàng)容器化平臺服務(wù),其中使用的是大量預(yù)定義規(guī)則。

          也千萬不要因?yàn)樵O(shè)置了某些消費(fèi)上限而掉以輕心,無論什么時候,一定要嚴(yán)謹(jǐn)?shù)膶Υ约旱拿恳欢未a每一個程序,清楚自己的程序做了什么產(chǎn)生了什么,尤其是那些容易在后臺持續(xù)運(yùn)行的進(jìn)程。

          后記

          不幸中的萬幸,谷歌在收到Milkie Way的完整事件反饋后,還是免除了這筆天價賬單,Milkie Way也避免了公司破產(chǎn)的厄運(yùn),當(dāng)然凡事也不會每次都那么幸運(yùn),Milkie Way的成員深知這個道理,在那之后花了幾個月時間學(xué)習(xí)云架構(gòu)和他們自己的業(yè)務(wù)體系,避免類似問題再次出現(xiàn)。

          所以,無論什么時候,沒有投機(jī)取巧,沒有捷徑,只有不斷刻苦鉆研避免問題發(fā)生才是王道。

          題外話,如果你覺得谷歌換成了國內(nèi)的那些巨頭,會免了這個賬單嗎?

          喜歡本文的朋友,歡迎點(diǎn)擊下方卡片
          關(guān)注我,訂閱更多精彩內(nèi)容

          往期推薦

          一個員工的離職,背后都意味著什么?

          徹底解決 gcr、quay、DockerHub 鏡像下載難題!

          OpenAPI 規(guī)范 3.1.0 發(fā)布,趕緊來嘗嘗鮮!

          合格的后端Coder都應(yīng)該寫好UT和Mock測試

          Spring Boot 2.4.3、2.3.9 版本發(fā)布,你準(zhǔn)備好了嗎?

          “智能”坐墊記錄離座時間,是高科技福利還是又一個員工壓榨機(jī)器?




          瀏覽 64
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本大乳高潮视频在线观看 | 人人干人人摸人人爱 | 人人妻人人操人人射 | 中文字幕日韩成人电影 | 国产精品99久久久久久人 |