瞄準微服務,GoPro 利用雲端平台幫助玩家延續精彩體驗

GoPro 運用 Amazon Elastic Container Service(Amazon ECS)的容器技術實現微服務,幫助生活玩家隨時隨地能在雲端儲存無限量的美好回憶。
評論
Photo Credit: Unsplash
Photo Credit: Unsplash
評論

今時今日要將照片、影片上傳至雲端對許多人來說是彈指之間、輕而易舉的事。然而要將全球用戶無以數計的資料保存在雲端並提供順暢的編輯、分享服務絕非易事。

愈來愈多的生活玩家使用極限運動攝影品牌 GoPro捕捉生活中的精彩時刻、呈現激勵人心的靜態畫面或動態影像記錄美好的回憶。而為了讓用戶擁有更完善的體驗GoPro 提供了 GoPro Plus 訂閱服務讓全球用戶可以無限量地將照片和影片自動上傳至雲端得到最完善的保存。此外GoPro 還開發了專用的手機應用程式將上傳、儲存、編輯和分享的流程簡化讓用戶可隨時隨地、跨裝置瀏覽儲存在雲端上的檔案。

要知道為了滿足這樣的服務需求GoPro Plus 平台每天必須為數億個請求提供服務並儲存海量級資料。而要處理如此龐大的資料量需要極複雜的運行系統。因此,如何更快的回應客戶需求如何優化運算及資源分配雲端基礎架構中所需要的容量規劃成為他們的一大難題。

GoPro 開發團隊需要一種能夠提高開發靈活性,簡化管理和部署,並更有效地使用資源的解決方案。

Photo Credit:Pixabay

「容器技術」和「微服務」,使軟體部署更加敏捷

屏棄以往將所有功能、服務集中於一個龐大、複雜的單體式 (Monolithic) 系統,GoPro 開發團隊選擇使用雲端運算平台,並且採用微服務的設計架構,來滿足龐大且動態的系統運算和儲存需求。

採傳統單體式架構運行的系統,如果發生某個元件失常,系統可能會整個無法運作。相較之下,使用現代化微服務架構建置的系統中,某個元件故障只會影響到單一功能。就像是一個公司的各部門是獨立的,一個部門出錯並不會直接影響到其他部門的作業,因此可避免全面性地異常。

而每一項微服務都是以解決特定問題為目的而設計,也由於微服務架構中的每個元件都可以獨立開發、部署、操作與擴充,就像積木一樣,可以靈活堆疊出整體架構。因為微服務之間互不依賴,開發人員可依據每項微服務的特性,自由選擇最適合的技術和工具來搭建,提高開發的靈活性。

微服務示意圖
傳統的單體式架構(Monolith) vs 各別運行的微服務(Microservices)/Photo Credit:AWS

所謂的容器 (Container) 技術,我們可以把它想像成貨櫃。當形形色色的貨物被裝入格式劃一的貨櫃中,經由遠洋貨輪在兩地之間移動,不管是用什麼樣的交通工具送達目的地,由於貨櫃是按照統一規格打造的「容器」,在運輸的過程中並不需要把貨物取出重新裝箱,運輸人員也不需要知道或在意每個貨櫃裡面裝的貨物是什麼規格。

也就是說,容器技術可大大增進效率,讓工程師或開發人員不用花費精力在管理和部署每個程式所需的繁多指令、參數和大量的檔案。

而容器技術受保護且隔離的特性,大大協助了微服務 (Microservices)應用,就像是把一家公司根據業務功能不同劃分部門,分別裝進貨櫃中獨立作業一樣。每個貨櫃可依據需求裝潢成辦公室、生產線或倉儲等,只要統一接上電源及網路後即可運作。

business-cargo-container-commerce-906494
把程式碼跟執行環境打包進貨櫃中,就是容器技術的概念。/Photo Credit:Pexels

GoPro 透過微服務,加速開發維運

為了有效並充分利用容器技術,GoPro 選擇在 Amazon Web Services(AWS)上運行整個基於雲端的 IT 基礎架構。過去GoPro 開發人員可能要花費數週,為每個專案項目構建一個個的環境。但屏棄過去的虛擬機架構,並改用容器技術來實現微服務後,現在開發人員只需為每項服務設好特定參數(如 CPU 和記憶體的需求),剩下的工作就可全交由AWS依據實際負載來配置調度,更有效率得延展虛擬機的運算資源,最終可達到70%的費用精簡。用先前的比喻來說,就像在出貨需求突然大增時,公司可以快速增加裝了生產線的貨櫃,調入額外的人員,瞬間提升生產能力。而當資源使用率低的時候,也會自動關閉容器、停止服務以節省資源。可見容器管理方法,更有助於確保軟體的正確部署,並降低雲端環境的複雜性。 

另外,GoPro 透過 AWS 的服務來監控其微服務的程序,讓開發人員有額外的機制來確保服務品質。開發人員也可自行製作專屬的儀表板,即時查看問題,並能儘速處理。

雲端服務的特色就像使用水電瓦斯服務一樣,是根據實際的使用量來計費的,這讓企業可以因應快速變化的市場,將資源精確地運用在必要的地方,以降低營運成本。藉由 AWS 的容器技術與微服務提升整體業務的敏捷度,開發團隊便能更快地進行測試與創新、加速推出產品與功能,讓企業搶先掌握商機、佈局市場。