iThome
提到迪士尼,許多人在腦中浮現的畫面,想必少不了膾炙人口的米老鼠、高飛狗或唐老鴨等角色,這些卡通人物是不少人都有的童年回憶。這家由華特‧迪士尼在1923年創辦,起初資本額為3,200美元的動畫工作室,現在已經演變成年營業額超過550億美元的大型娛樂集團,除了原本的動畫事業外,還跨足經營電影、有線電視以及遊樂園事業等。
早期的迪士尼名作,像是《幻想曲》、《白雪公主》及《木偶奇遇記》等,都是靠著動畫師用鉛筆一張一張手繪,再轉印到賽璐璐片上。光是1秒的動畫,至少就得畫上24幀,才能在大螢幕上賦予卡通人物如人般活靈活現的姿態。
但是現今經營電影、動畫事業,要成功,不單只是靠好劇本、演員及動畫師,IT在其中的參與更是越來越有份量,像是近年的《無敵破壞王》、《冰雪奇緣》、《動物方城市》等作品,動畫製作的媒介已經以電腦為主力,不只如此,絢麗的電影特效,也必須仰賴電腦後製。如何讓動畫師、應用程式開發者無須為IT服務操心,可以專心地投入影視創作及開發工作,靠的就是背後穩健的基礎架構服務。
華特迪士尼影業集團首席系統工程師Leonard Arul表示,其團隊主要任務為管理迪士尼影業製作所需的IT基礎架構,目前總共管理的儲存容量多達20至30PB,每天要搬遷多達15TB的數據,「光是拍攝一部動作片,背後所要使用的應用程式就超過200個。」而該團隊的挑戰,又可以分為網路管理、儲存管理,快速進入市場及企業資源管理這四大任務。
第一個挑戰是維護串起迪士尼影視製作所需要的網路架構,「支撐這些任務的伺服器,散落在迪士尼各處的建築物及分部設施」,Leonard Arul解釋,一部電影的拍攝場景不會在單一地點就能完成,而是橫跨全世界的不同國家,IT團隊的難題在於統整這些散落在全世界各處的影片資料,讓導演、製作人可以檢視每日拍攝的工作鏡頭,並思考如何改善它的視覺效果。
Leonard Arul表示,影片檔案所需要執行的後製,不像單張照片那麼簡單,「一個鏡頭拍攝需要數臺攝影機」,如果要拍攝3D影片,需要的攝影器材更是加倍成長。也因此,每部電影所產生的毛片資料都相當可觀,像是近年《神鬼奇航:死無對證》這部電影,Leonard Arul表示,光是影片Raw檔就占據了1PB的儲存空間,「如何在不同工作場域搬移這些檔案相當困難。」
第二個挑戰則是管理PB等級的儲存架構。隨著後製技術一日千里的進步,支撐迪士尼運作背後所需要儲存架構規模,自然水漲船高。Leonard Arul表示,從90年代開始,迪士尼影視製作開始引入數位技術,以1990年推出的《救難小英雄:澳洲歷險記》而言,當時一部影片製作約需要1TB的影片原始檔,到了2000年的動畫片《恐龍》,原始檔容量劇烈成長至50TB,更甚,2010年的《魔髮奇緣》,原始檔已經成長到400TB。
第三個挑戰則是在一定時間內,提供多種發布形式。早期動畫上映時,除了提供各大電影院撥放,也只需要提供錄影帶、VCD等影片媒介而已。但是現在上映前,迪士尼除了提供各平臺多國語言、字幕的預告片之外,電影發布形式也更加多元,如DVD、藍光,以及線上串流等。
「現今影片交付的壓力也變得越來越大」,Leonard Arul表示,以前電影在美國與海外上映日的時間間隔較大,但是現在全球各地上映日的差距不僅縮短,其他影片媒介如DVD,影片上映幾周內也得推出。「快速進入市場永遠都是事業的重要推力。」他表示。
最後的挑戰則是企業內部資源管理。迪士尼旗下不只擁有一家電影公司,同一時間內有多部電影、動畫都在進行製作,「我們得要確保各應用程式、硬體設備資源都能妥善隔離。」Leonard Arul表示。
Leonard Arul表示,最早在裸機架構的時期,應用程式部署的工作得花上數周,演進到PaaS架構後,只要數分鐘就可以完成部署工作。他舉例,原本內部總共8個資產管理應用程式,以前得要2周的前置作業才能開始運作,「利用PaaS,可讓老舊應用程式繼續運作」,在打造出不需更動的基礎架構(Immutable Infrastructure)的同時,也可以繼續開發新興應用程式。但是,基礎架構的演進,「除了帶來方便,也會帶來新的挑戰。」
首先是系統監控的挑戰。IT團隊要能及時偵測系統的錯誤,一旦發現系統故障,還要能馬上進行故障排除。由於電影、動畫製作不會只在單一地點完成,同時,每部影片所需要的應用程式亦不同。Leonard Arul表示,舉例,像是某次海外電影取景時,網路頻寬突然下降至5Mb至10Mb,但當地沒有工程師可以即時協助劇組排除故障,「這類事件我們都得馬上收到通知。」因此,IT團隊必須提供單一的系統除錯介面,「不能只提供資料中心使用,其他地方也可用」,此外,還必須架設監控系統,追蹤系統、伺服器的運作情形。
再者是資料轉移的考驗,迪士尼會將影片相關的資料,隨著時間遷移至不同的基礎架構上儲存。Leonard Arul解釋,電影從製作到封存,中間還會經過上映、DVD及藍光釋出、線上推出等階段。隨時間,影視資料會從高速儲存逐漸搬移至低速儲存,「同時還要確保哪些人有瀏覽的權限。」
最後則是要打造出自助式IT服務,「讓開發者的工作更加輕鬆」,Leonard Arul舉例,像是建立統一的持續整合、持續交付流程,即使不同的開發專案亦可使用。或是開發者如碰上增加專案儲存空間的需求,不須透過維運團隊也可以自行擴充空間。
攝影/王立恒
利用PaaS平臺,可以讓老舊應用程式繼續運作。打造不需變更基礎架構(Immutable Infrastructure)的同時,也能繼續開發新興應用程式。——華特迪士尼影業集團首席系統工程師Leonard Arul
資產管理系統運作靠OpenShift
因此,目前迪士尼影業集團除了4座私有資料中心之外,更導入Google及AWS的公有雲服務。基礎架構也從過去的裸機、伺服器虛擬化、IaaS,逐漸將工作負載搬遷PaaS平臺OpenShift上運作。
華特迪士尼影業集團系統工程師Thomas Haynes表示, IT團隊已經將資產管理系統都轉移至OpenShift上運作,「從傳統的Tomcat應用程式,轉型成Spirng Boot組成的微服務應用程式。」他表示,目前資管理系統共有1,000個使用者,隨著未來使用規模增加,IT團隊也計畫提高應用程式集中化的程度。其中一個導入OpenShift的因素,「要讓開發人員不透過系統工程師,也能取得基礎架構資源」,就如公有雲廠商提供的服務般,開發團隊只要按幾個按鍵,就可以建置所需要的基礎架構資源。
Thomas Haynes也揭露了這套OpenShift的使用架構。以迪士尼影業集團的內部資料中心而言,現階段架設了3個開源虛擬化平臺KVM叢集作為基礎架構。而在KVM平臺上,總共有12個節點支援OpenShift平臺的運作。
而這12個節點,又可細分成3類節點:3個主節點、3個基礎架構節點,及6個應用程式節點。Thomas Haynes表示,主節點的任務是維持API運作順暢,讓開發人員可以自由存取OpenShift。再者,容器儲存庫、Log系統或監控系統,則是建置在基礎架構節點上運作。其餘的節點則是應用程式節點,「確保應用程式正常運作,讓終端使用者可以存取應用程式。」
但是,將基礎架構翻新的同時,也會受到過去包袱的箝制。Thomas Haynes舉例,像過去使用VM時,系統管理員可以設立白名單,允許特定IP位址的VM掛載硬碟。但轉為使用OpenShift之後,一個節點上同時會有許多Pod同時運作,「如果全部的Pod都在白名單之上,就無法確保彼此有足夠的隔離度。」
而IT團隊想到的辦法,就是在網路流量的出入口,部署一個控制節點中Pod存取權限的Egrass Pod。Thomas Haynes解釋,當節點中某個Pod想要存取NFS伺服器,必須先與Egrass Pod界接。再者,IT團隊也可以利用防火牆,限定Pod可以存取的網路,加強資安防護並提高存取控制的精密度。
另外,Thomas Haynes也預想到,隨著基礎架構擴張,系統複雜度、資源調度難易度也逐步提升,「因此我們將中控中心獨立於OpenShift節點外。」他表示,如此一來,在使用OpenShift時,「開發者不需要釐清Pod在何處運作,只要理解如何使用中控中心就好。」未來本地資料中心執行維護工作時,IT團隊也能夠利用中控中心,將應用程式、工作負載搬移至外部公有雲運作。
Thomas Haynes表示,目前在OpenShift平臺上運作的Pod總共有1,000個,計畫在年底將Pod數量提升至超過1萬個。現階段迪士尼其他事業部也陸續開始導入OpenShift。
VM組態管理不易
而迪士尼影視集團旗下另一個將OpenShift導入正式環境的子公司,就是皮克斯動畫工作室,在2006年時被迪士尼所併購。在這家具有傳奇色彩的工作室,一手推出了《玩具總動員》、《超人特攻隊》等知名動畫。對皮克斯而言,OpenShift可用於打造自助式IT服務,同時,皮克斯也導入了Docker及Ansible,解決基礎架構組態設定的難題。
皮克斯動畫工作室資深Unix系統管理員Charles Sochin笑著說:「我們是網路及伺服器管理(Network and Server Admin)團隊,簡稱NSA。」目前該團隊的編制為6人團隊,主要任務是提供皮克斯動畫製作所需要的基礎架構。除了管理路由器、防火牆、及網路交換器之外,正式環境的VM、容器、老舊應用程式及郵件伺服器等,都屬於該團隊的管轄範圍,「皮克斯永遠都在尋找新技術,試圖簡化這些IT管理工作。」
當下皮克斯IT團隊碰上的難題就是VM管理,Charles Sochin表示,開發團隊會不斷提出新增VM的需求,作為新應用程式的開發環境,「系統管理員得清楚VM如何被部署,當中執行了哪些應用程式」,而導入容器技術Docker後,更讓MIS管理工作雪上加霜,「因為任何人都可以隨意開啟、部署Docker容器」,同時,IT團隊也要確保容器映像檔是來自安全的儲存庫。再者,更新VM也是相當繁瑣的工作,「規模小的時候還好,但當規模達到數千臺時就非常困難。」
Charles Sochin表示,皮克斯內部有許多老舊應用程式,各自都有獨特的系統相依性設定,導致更新工作變得非常複雜。他舉例,當Rails發布新版本時,維運團隊得要重新建立VM,部署完整新版Rails後,再請開發人員將應用程式搬遷至新VM中運作,「我們需要一個工具,可以集中管理應用程式、組態設定跟部署工作」,提高工作流程透明度。
解決這些難題,皮克斯選擇導入組態管理工具Ansible,利用YAML撰寫組態設定文件Playbook,簡化管理部署工作及組態設定,也能讓更新工作自動化,「讓VM、容器的建置變得更有彈性。」
不僅Ansible,皮克斯也使用OpenShift加速應用程式部署、建置的自動化,同時,還能打造自助式IT開發環境。皮克斯動畫工作室技術總監Dale Bewley表示,自助式IT服務的好處在於,開發者不需要向維運團隊提交開啟VM的需求,不用擔心理會DNS、負載平衡等組態設定改變。
攝影/王立恒
打造自助式IT服務的好處在於,應用程式開發者不需要向維運團隊提交開啟VM的需求,也不用擔心DNS、負載平衡的組態設定改變帶來的影響。——皮克斯動畫工作室科技總監Dale Bewley
容器技術容易解決流量問題
除了VM,皮克斯也在正式環境導入了容器技術,利用Openshift作為Docker容器的運作平臺。Dale Bewley表示,容器技術的好處在於易於水平擴充,「可以很輕鬆地增加節點數量。」
為簡化容器的使用流程,Dale Bewley指出,當中是使用OpenShift所提供的S2I框架(Source-to-Image),從映像檔來源開始,建立可複製的Docker映像檔,「不僅可以用於映像檔建置,S2I也可用於容器建置程序」,他表示,S2I可讓開發者專注在應用程式開發,不用介入Dockerfile或是Ansible Playbook的運作。
在使用容器技術時,其中要注意的要點,就是映像檔來源是否安全,一旦映像檔儲存庫有遭受汙染的容器,當使用者不慎下載安裝後,也會使正式環境的其他容器遭受感染,「紅帽提供的映像檔內容的安全性較高,但是當映像檔來自第三方儲存庫時,便無法確保它的安全性。」
但是,皮克斯打造自助式服務的目的,就是希望開發者不需要介入底層基礎架構的運作。利用S2I,開發者可以建置可複製的容器映像檔,「當映像檔來源有所變更時,我們也想讓應用程式、映像檔的更新自動化。」Dale Bewley表示。
映像檔建置、部署都自動化
在紅帽OpenShift的設計中,當映像檔有更新時,系統可以自動觸發,從映像檔儲存庫中下載新版本的映像檔,並且自動部署,這樣的功能稱為Image Streams。而皮克斯的容器映像檔更新步驟,可以被切分為2個階段。第一個階段是建置階段。Dale Bewley表示,每當偵測到版本控制系統的主幹、分支版本合併成功後,就會自動驅動建置過程。
他舉例,像是紅帽官方映像檔儲存庫中有Python 2.7版的映像檔,而皮克斯內部開發的專案叫做Cool App。下載至使用者本地環境的映像檔,使用者可以給予它一個標籤(Tag),「這個標籤會指向該映像檔來源的儲存庫。」他表示。
當來源儲存庫的Python映像檔有更新時,Image Streams會自動比對儲存庫及映像檔標籤,觀察其Hash值是否有變更,如果有異動,OpenShift便會自行驅動更新流程,下載最新版本的映像檔。
而與Python映像檔有相依性的內部專案Cool App,此時正處於暫存階段(Stage)尚未進入正式環境。在OpenShift的流程設計中,還有提供了一個BuildConfig配置檔,儲存許多系統中介資料,包含應用程式原始碼及基礎映像檔(Base Image),並且定義映像檔的建置過程以及儲存位置。
當建置過程開始時,OpenShift會下載Python映像檔,並且開啟一個Build Pod讓它運作。接著,系統檢查Build Pod中的運作Python映像檔,發現有新版本後,便會自動更新。更新後的映像檔,除了上傳至本地的叢集儲存庫外,也會自動寫入處在暫存階段的Cool App。
第二階段則是部署階段。當暫存階段的Cool App更新之後,接著就是必須部署到正式環境。在OpenShift的設計中,除了靠BuildConfig配置檔完成建置階段,還要靠Deployment Config配置檔,讓映像檔變成在Pod內執行的容器。
Deployment Config配置檔是由使用者自行定義的模板,描述部署過程外,還有過程中所需映像檔、環境變數,並且透過Replication Controller,管理Pod的生命周期。
導入OpenShift之後,Dale Bewley表示,無論是維運團隊、開發者都相當滿意它的自動化功能。過去新進人員需要3個月才學會如何將程式碼提交至正式環境,在使用OpenShift之後,只需要1周就可以開始提交程式碼,「未來想要讓更多工作負載都靠OpenShift執行。」
熱門新聞
2024-12-16
2024-12-16
2024-12-17
2024-11-29