「軟體正在吃掉全世界」,這句Netscape創辦人Marc Andreessen的名言,很貼切地描述當今軟體主宰世界的現象,而軟體開發人員就是時勢造英雄。試想,臉書創辦人Mark Zuckerberg在全球首富已排名第六,而這個世界若沒有臉書,對人類歷史的影響何嘗巨大。
然而看在可口可樂北美集團科技總監Michael Connor眼裏,現實的IT工作中有太多阻礙,以至於原本很多軟體開發人員可以發揮能力,為世界或企業帶來改變,卻困在解決許多無法帶來價值的問題。
Michael Connor表示,IT人員花太多時間在解決網路問題、找尋故障排除方法等吃力不討好,又無法彰顯IT價值的事務。
維運工作吃力,真正開發企業應用的時間不到5成
以可口可樂自身的情況為例,IT團隊將39%的時間花在開發企業的商業應用程式,此外,應付突發狀況占了將近24%的時間,作業變更花了20%的時間,而IT開發的專案管理工作亦占了約19%的時間。從這個結果來看,IT團隊能為企業帶來真正價值的應用程式開發,只占了不到5成的時間,也就是說,IT團隊將一半以上的時間浪費在對企業毫無價值的問題。不僅企業質疑IT團隊的貢獻度,就連IT人自身的生活品質也大受影響,而這幾乎是每個企業都面臨的現象。
為了解決在維運與作業變更上花費太多時間,有些企業開始把資訊系統搬上雲端,採用IaaS公眾雲服務商提供的虛擬機器服務,例如AWS EC2,以為不必管理硬體伺服器,應該就能擺脫維運的煩人問題。然而事實卻不是如此,Michael Connor表示,並非採用雲端的虛擬機器服務就能擺脫維運,其實雲端上的虛擬機器跟實體伺服器差不了太多,仍然要處理不少維運問題,像是資安問題、更新修補檔、系統監控、系統管理、作業系統升級、軟體授權、使用率過低與過高的問題,以及系統部署。
DevOps並非系統維運的萬靈丹
對於解決系統維運的負擔,現在流行的DevOps會是解決的方法嗎?Michael Connor說,以為開發者學會了DevOps就能擺脫維運的問題,是不切實際的想法。主要的迷思是誤以為要求開發者做DevOps──撰寫程式碼、執行單元測試、自動部署程式,就認為開發者可以一肩扛下維運的工作。但其實並不然,系統維運還包含更新修補檔、監控系統等工作。例如一早上班發現一臺機器必須更新18個套件的安全更新檔,對開發者來說可是沈重的負擔。
另一方面,Michael Connor指出,他共事過的優秀開發者,其人格特質比較偏像音樂家或藝藝家,樂於追求創意,並不擅長於系統維運工作,所以若執意要這些開發者扛起維運工作,往往最後是犧牲了優秀的軟體人才。
以Serverless翻轉開發與維運
可口可樂北美集團的開發團隊後來嘗試了Serverless運算架構,Michael Connor認為Serverless可以改變上述開發團隊的困境,以及改變文化。開發者還是可以負責DevOps,但必須把大量維運工作轉移給服務商。他們採用AWS Lambda無伺服器運算服務,也就是由AWS負責許多維運的工作。
Michael Connor表示,DevOps要能成功,關鍵在於IT架構的可程式化與自動化,也就是Infrastructure as Code。即使企業已經採用雲端虛擬機器服務,但系統管理若仍透過網頁介面手動設定與調整,這樣的管理方法勢必無法擴張,發揮不了DevOps的效果。而採用Serverless開發的一個好處,就是自然而然都靠程式碼來控制,程式碼存在Github,所有開發人員都登入Github,所有程式碼都有版本控制,再推送到CI/CD的整合測試與部署流程。
可口可樂換到Serverless架構後有了很大的改變,Michael Connor表示,現在有68%的時間是用在開發企業商業應用程式,比起之前的39%相差甚大,未來這個比例甚至還有機會提高。
然而Serverless並非萬靈丹,還是會有突發狀況,只是發生次數大幅降低,花在處理突發狀況的時間只占6%,作業變更占17%的時間、IT專案管理工作占9%。整體而言,在Serverless架構開發對企業及業務都帶來很大的轉變。
Serverless成本優勢,長尾效應驚人
可口可樂北美集團在開發飲料自動販賣機的會員忠誠行銷計畫時,導入無伺服器運算架構。他們的目標是提供消費者在自動販賣機使用會員卡、信用卡或行動支付購買飲料,並且結合會員活動以促進銷售,在消費者購買後,將消費資訊、會員卡餘額傳送給消費者。
其應用流程是消費者以會員卡或信用卡購買飲料後,交易資料會從自動販賣機傳到支付閘道,支付閘道接著透過REST API呼叫Amazon API閘道,API閘道接著將訊息傳送到AWS Lambda去執行,處理所有的交易業務邏輯,接著再將消費資訊更新到Apple Pay或是Android Pay,消費者就能獲得購物資訊。整個流程所需要的時間不到1秒鐘,以AWS目前的收費只要千分之一美分,而且只有當消費者在自動販賣機購買飲料,啟動程式執行,可口可樂才需要付錢給AWS。
可口可樂使用Serverless架構後,總體成本省下不少費用。在此之前可口可樂是採用AWS EC2雲端虛擬機器服務,他們總共使用了6臺EC2 T2.M等級的虛擬機器,Michael Connor指出,EC2的總體成本不能只看牌價,因為實際的總體成本還必須包含作業系統、系統管理、資安軟體、自動化部署軟體等成本。他說,一臺Amazon T2等級的虛擬機器牌價250美元,以可口可樂本身的例子,還要包含作業系統的費用56美元、系統管理成本150美元、資安軟體30美元、自動化部署軟體14美元,所以實際總體成本是牌價的5倍。
可口可樂使用的6臺EC2 T2.M虛擬機器,一年下來總體成本為12,864美元;然而在使用AWS Lambda的情況下,使用量每月3千萬次,一年總體成本是4,490美元,成本省了65%,相當驚人。然而,Lambda是完全依照使用量計費,在使用量低的情況下會比EC2便宜許多,Michael Connor依照可口可樂的情況計算,一旦達到每月8千萬次的使用量,Lambda的總體成本就會與EC2相當,使用量大於每月8千萬次,Lambda在價格上就沒有優勢了。
不過,大多數的系統都有長尾效應,例如可口可樂的行銷計畫可能一推出吸引很多人使用,但過了一段時間可能使用量就降低,倘若使用EC2這類的IaaS服務模式,即便使用量降低仍要支付相同的費用。待服務進入長尾效應階段,Michael Connor表示,Serverless的使用量在每個月1千萬次以下,則可節省將近99%的成本。所以,企業可依照其應用的特性來選擇是否在Serverless平臺開發應用程式,畢竟Serverless有其獨特的特性,而且目前也不是所有企業應用都適合在Serverless環境開發。