CNCF案例研究:VSCO

VSCO:移動應用如何經過雲原生節省70%的EC2帳單linux

圖片描述

公司:VSCO
地點:加州奧克蘭
行業:照片移動應用程序數據庫

挑戰

在2015年從Rackspace遷移到AWS以後,除了運行PHP單體應用外,VSCO開始構建Node.js和Go微服務。該團隊使用Docker將微服務容器化,但「它們都是在每一個服務專用的EC2實例的獨立組中。」機器學習團隊工程經理Melinda Lu說。社區團隊高級軟件工程師Naveen Gattu補充:「這產生了大量浪費的資源。咱們開始尋找一種在AWS EC2實例中整合,並提升效率的方法。」安全

解決方法

團隊開始探索編排系統,並在決定採用Kubernetes以前查看了包括Mesos和Swarm在內的幾種解決方案。VSCO也在他們的雲原生堆棧中使用gRPC和Envoy。架構

影響

在以前,部署須要「大量的手動調整,咱們編寫的內部腳本,以及因爲咱們不一樣的EC2實例,操做必須從始至終照顧整個事情。」高級軟件工程師Brendan Ryan說。「咱們並無真正有條理進行測試的故事,可重複使用的容器或以標準化的方式構建。」如今有更快的上線流程。以前,首次部署的時間是兩天的動手設置,如今是兩個小時。經過持續集成、容器化和Kubernetes,速度顯着提升。典型服務從代碼完成到生產部署到基礎設施的時間從一到兩週減小到兩到四個小時。Gattu補充:「在工時來講,這是一我的比較起在同時須要開發者和DevOps。」在生產中單個部署的時間減小了80%,部署的數量也增長了,從每一年1200到每一年3200。實際上也節省了成本:憑藉Kubernetes,VSCO的EC2效率提升了2倍至20倍,具體取決於服務,使公司的EC2帳單整體節省約70%。Ryan指出,該公司可以從管理一個大型單體應用程序到50多個微服務,使用「或多或少同等規模的開發團隊。咱們之因此可以作到這一點,是由於咱們對工具的信任度更高和靈活性更高,所以咱們不須要聘請DevOps工程師來調整每項服務。」隨着Kubernetes、gRPC和Envoy到位,VSCO的中斷時間減小了88%,這主要是因爲消除了JSON模式錯誤和特定於服務的基礎設施配置錯誤,以及加快修復停機的速度。機器學習

「看到咱們的工程師經過結合大量的Kubernetes基元來提出創造性的解決方案,讓我一直留下了很是深入的印象。將Kubernetes構造做爲服務暴露給咱們的工程師,而不是暴露高階構造對咱們來講效果很好。它可讓你熟悉這項技術,並用它作更多有趣的事情。」 - Melinda Lu,VSCO機器學習團隊工程經理

做爲移動攝影應用程序,VSCO於2011年誕生於雲端。最初,「咱們使用Rackspace並使用PHP單體應用程序與MySQL數據庫通訊,使用FTP部署,沒有容器化,沒有編排。」軟件工程師Brendan Ryan說,「當時足夠了。」 微服務

在VSCO於2015年遷至AWS而且其用戶羣超過3000萬大關以後,該團隊很快意識到現有設置將不夠用。開發者開始構建一些Node和Go微服務,團隊嘗試用Docker進行容器化。可是「它們都是在每一個服務專用的EC2實例的不一樣組中。」機器學習團隊工程經理Melinda Lu說。社區團隊高級軟件工程師Naveen Gattu補充說:「這產生了大量浪費的資源。咱們開始尋找一種在EC2實例中整合並提升效率的方法。」工具

經過一個包括易用性和實現、支持級別以及是不是開源的清單,團隊在決定使用Kubernetes以前評估了一些調度解決方案,包括Mesos和Swarm。「Kubernetes彷佛擁有最強大的開源社區。」Lu說。此外,「咱們已經開始標準化大量的Google堆棧,Go做爲編寫語言,gRPC用於咱們在數據中心內部服務之間的幾乎全部通訊。因此咱們彷佛很天然地選擇了Kubernetes。」性能

「Kubernetes彷佛擁有最強大的開源社區,並且,咱們已經開始標準化不少Google堆棧,Go做爲編寫語言,gRPC用於咱們在數據中心內部服務之間的幾乎全部通訊。因此咱們彷佛很天然地選擇了Kubernetes。」 - Melinda Lu,VSCO機器學習團隊工程經理

當時,生態系統中不多有託管的Kubernetes產品和較少的工具,所以團隊創建了本身的集羣,併爲其特定的部署需求構建了一些自定義組件,例如自動入口控制器和灰度部署的政策構造。「咱們已經開始拆除單體了,因此咱們一個接一個地搬東西,從至關小的低風險服務開始。」Lu說。「每一項新服務都部署在那裏。」第一項服務於2016年末遷移,一年後,整個堆棧的80%在Kubernetes上跑,包括其他的單體。學習

帶來的影響很大。在過去,部署須要「大量的手動調整,咱們編寫的內部腳本,以及因爲咱們不一樣的EC2實例,操做必須從始至終照顧整個事情。」Ryan說。「咱們並無真正有條理進行測試的故事,可重複使用的容器或以標準化的方式構建。」如今有更快的上線流程。以前,首次部署的時間是兩天的動手設置時間,如今是兩個小時。測試

經過持續集成、容器化和Kubernetes,速度顯着提升。典型服務從代碼完成到生產部署到基礎設施的時間從一到兩週減小到兩到四個小時。另外,Gattu說,「在工時來講,這是一我的比較起在同時須要開發者和DevOps。」在生產中單個部署的時間減小了80%,部署的數量也增長了,從每一年1200到每一年3200。

「看到咱們的工程師經過結合大量的Kubernetes基元來提出創造性的解決方案,讓我一直留下了很是深入的印象。將Kubernetes構造做爲服務暴露給咱們的工程師,而不是暴露高階構造對咱們來講效果很好。它可讓你熟悉這項技術,並用它作更多有趣的事情。」 - Melinda Lu,VSCO機器學習團隊工程經理

實際上也節省了成本:憑藉Kubernetes,VSCO的EC2效率提升了2倍至20倍,具體取決於服務,使公司的EC2帳單整體節省約70%。

Ryan指出,該公司可以從管理一個大型單體應用程序到50多個微服務,使用「或多或少同等規模的開發團隊。咱們之因此可以作到這一點,是由於咱們可以增長對工具的信任,而且當系統存在壓力點時更加靈活。你能夠增長服務的CPU內存需求,而無需啓動和拆除實例,閱讀AWS頁面只是爲了熟悉許多行話,這對於咱們規模的公司而言並不適合。」

Envoy和gRPC也對VSCO產生了積極影響。「咱們從開箱即用的gRPC中得到了許多好處:跨多種語言輸入安全性、使用gRPC IDL輕鬆定義服務、內置架構如攔截器,以及經過HTTP/1.1和JSON的性能改進。」Lu說。

VSCO是Envoy的首批用戶之一,在它開源五天後將其投入生產。「咱們但願經過咱們的邊緣負載平衡器直接向移動客戶端提供gRPC和HTTP/2,而Envoy是咱們惟一合理的解決方案。」Lu說。「在全部服務中默認發送一致且詳細的統計數據的能力,使得儀表板的可觀察性和標準化變得更加容易。」Envoy內置的指標也「極大地幫助了調試」,DevOps工程師Ryan Nguyen說。

「由於如今有一個支持Kubernetes的組織,這會加強信心嗎?答案是響亮的。」 - Naveen Gattu,VSCO社區團隊高級軟件工程師

隨着Kubernetes、gRPC和Envoy的到位,VSCO的中斷時間減小了88%,這主要是因爲消除了JSON模式錯誤和特定於服務的基礎架構配置錯誤,以及加快修復停機的速度。

鑑於其使用CNCF項目的成功,VSCO開始嘗試其,包括CNI和Prometheus。「擁有一個大型組織支持這些技術,咱們更有信心嘗試這個軟件並部署到生產中。」Nguyen說。

該團隊爲gRPC和Envoy作出了貢獻,並但願在CNCF社區中更加活躍。「看到咱們的工程師經過結合大量的Kubernetes基元來提出創造性的解決方案,讓我一直留下了很是深入的印象。」Lu說。「將Kubernetes構造做爲服務暴露給咱們的工程師,而不是暴露高階構造對咱們來講效果很好。它可讓你熟悉這項技術,並用它作更多有趣的事情。」


KubeCon + CloudNativeCon和Open Source Summit大會日期:

  • 會議日程通告日期:2019 年 4 月 10 日
  • 會議活動舉辦日期:2019 年 6 月 24 至 26 日

KubeCon + CloudNativeCon和Open Source Summit贊助方案
KubeCon + CloudNativeCon和Open Source Summit多元化獎學金現正接受申請
KubeCon + CloudNativeCon和Open Source Summit即將首次合體落地中國

相關文章
相關標籤/搜索