啟動 Google 生產:Google 的網站可靠性工程團隊如何使用 Go
谷歌經營著少量非常龐大的服務。這些服務由一個覆蓋開發者所需一切的全球基礎設施提供支援:儲存系統、負載均衡器、網路、日誌記錄、監控等等。然而,它不是一個靜態系統,它不可能是。架構演化,新產品和想法不斷產生,新版本必須推出,配置推送,資料庫模式更新等等。我們最終會以每秒數十次的速度將更改部署到系統中。
由於規模如此之大,以及對可靠性的迫切需求,谷歌開創了網站可靠性工程(SRE)的先河,此後許多其他公司都採用了這一角色。“SRE 是當你把操作當作軟體問題來對待時得到的結果。我們的使命是保護、提供和改進谷歌所有公共服務背後的軟體和系統,時刻關注它們的可用性、延遲、效能和容量。”-站點可靠性工程(SRE)。
2013-2014 年,谷歌的 SRE 團隊意識到,我們的生產管理方法在很多方面都不再有效。我們已經遠遠超越了 shell 指令碼,但是我們的規模有太多的變動部分和複雜性,所以我們需要一種新的方法。我們確定我們需要朝著生產的宣告模型(稱為 “ Prodspec
”)前進,它驅動一個專用的控制平面(稱為 “Annealing
”)。
當我們開始這些專案時,Go
只是谷歌關鍵服務的一個可行選擇。大多數工程師更熟悉Python
和C++
,這兩者都是有效的選擇。儘管如此,Go
還是吸引了我們的興趣。新奇的吸引力當然是一個因素。但是,更重要的是,Go
承諾了在效能和可讀性之間的最佳平衡點,這是其他語言都無法提供的。我們開始了一個小實驗, 用 Go 實現了Annealing
和Prodspec
的一些初始部分。隨著專案的進展,最初用Go
編寫的部分成為了核心。我們對Go
很滿意——它的簡單性越來越好,效能也很好,併發原語很難被替代。
從來沒有使用Go
的命令或要求,但是我們不想回到Python
或C++
。Go
在Annealing
和Prodspec
中有機成長。這是正確的選擇,因此現在是我們的語言選擇。現在,大部分谷歌產品是由我們用 Go 編寫的系統管理和維護的。
在這些專案中擁有一門簡單語言的力量是難以言表的。有些情況下確實缺少了某些特性,例如在程式碼中強制某些複雜結構不應發生變化的能力。但是對於每一個例子來說,毫無疑問,有幾十個或上百個例子,簡單性是有用的。
例如,Annealing
影響各種各樣的團隊和服務,這意味著我們嚴重依賴於整個公司的貢獻。Go 的簡單性使我們團隊之外的人能夠看到為什麼某些部分或其他部分不適合他們,並經常自己提供修復或特性。這讓我們得以迅速成長。
Prodspec
和Annealing
負責一些相當關鍵的部件。Go
的簡單性意味著程式碼易於遵循,無論是在review
期間發現bug
,還是試圖確定在服務中斷期間究竟發生了什麼。
Go
的效能和併發性支援也是我們工作的關鍵。由於我們的產品模型是宣告式的,所以我們傾向於操作大量結構化資料,這些資料描述了產品是什麼以及它應該是什麼。我們擁有大型服務,因此資料可能會越來越大,這種情況下通常會使純粹的順序處理效率不高。
我們在很多地方用很多方式操縱這些資料。 這不是讓一個聰明人想出我們演算法的並行版本的問題。 這是一個偶然的並行性問題,即找到下一個瓶頸並對程式碼部分進行並行處理。Go
可以做到這一點。
由於Go
的成功,我們現在將 Go 用於Prodspec
和Annealing
的每個新開發中。除了 SRE 團隊,谷歌的工程團隊也在他們的開發過程中採用了Go
。瞭解Core Data Solutions,Firebase Hosting和Chrome團隊如何使用Go
來大規模構建快速,可靠和高效的軟體。
站點可靠性工程師 Pierre Palatin 撰寫
References
- 站點可靠性工程(SRE)https://sre.google/
- Core Data Solutions https://go.dev/solutions/google/coredata/
- Firebase Hosting https://go.dev/solutions/google/firebase/
- Chrome https://go.dev/solutions/google/chrome/
- 加微信實戰群請加微信(註明:實戰群):gocnio
相關文章
- 使用Google抓取方式,測試React驅動的網站SEOGoReact網站
- 在Google管理一個軟體團隊Go
- Google塗鴉幕後團隊揭祕Go
- Google Brain團隊的研究方法是什麼?GoAI
- Google移動網站設計原則Go網站
- 網友:Go 你是 Google 的,Go:我不是Go
- Google 開發者網站常用網址Go網站
- Google+開發團隊分享的5個提升網頁生成速度的經驗Go網頁
- 在 Angular 網站部署 Google 廣告Angular網站Go
- Google Now團隊不滿新任CEO 全員離職Go
- 如何使用Google服務Go
- Google 400多號的科學家團隊專案分佈Go
- Google極客談軟體開發團隊的不良行為Go
- 團隊管理:產品經理如何與團隊相處
- 五種方法CRM提高團隊生產力
- Google社交產品Google+功能全解析Go
- Google開原始碼網站搬家了Go原始碼網站
- 遠東軼事:在Google無人駕駛汽車團隊的工作感想Go
- 請問banq,你是如何使用google的站內搜尋功能的Go
- Google網站管理員:提升移動Web效能的4個建議Go網站Web
- Laravel 使用 Laravel-google-authenticator 擴充通過 Google 身份驗證器為你的網站打造一個動態手機令牌LaravelGo網站
- Laravel 使用 Laravel-google-authenticator 擴充透過 Google 身份驗證器為你的網站打造一個動態手機令牌LaravelGo網站
- Google的Go語言速度提升Go
- 通知 | 與Google AR/VR技術團隊面對面深入交流GoVR
- 全球皆可訪問的 Google Codelabs 網站Go網站
- 個人網站接入Google Ads的一點心得網站Go
- Go中使用Google Wire實現依賴注入Go依賴注入
- 我所使用的生產 Java 17 啟動引數Java
- GOOGLE:移動網際網路案例分析Go
- Google按圖搜尋,中國團隊完成一半以上研發Go
- Google是如何蒐集網際網路資訊Go
- Google如何盈利?Go
- Go Global with Google | 谷歌助力遊戲開發者揚帆出海(深圳站)Go谷歌遊戲開發
- SEO網站沒戲可唱 Google停止更新PageRank網站Go
- Google Drive新增靜態網站釋出功能Go網站
- 海外網站title標題,防止Google重寫網站Go
- 一個神奇的網站http://www.googleisok.com/網站HTTPGo
- Pipefy如何使用團隊拓撲方法建設敏捷團隊?敏捷