行動通訊軟體業者Line的用戶數超過5億,每天要處理的訊息量超過170億筆,而且這個數字還在不停增長。Line系統只要當機10分鐘,就會有1億筆訊息無法即時傳送。因此,怎麼縮短訊息傳送時間,讓伺服器與用戶端之間的連線更有效率,確保每天上百億筆訊息都能即時、快速地傳送和接收,是Line一直在找尋最佳解的關鍵課題。
Line臺灣區技術長陳鴻嘉揭露總部網路架構的改造歷程,其中一項關鍵作法,就是靠新一代網路通訊協定SPDY來彌補HTTP在行動化時代的不足。
Line的訊息仰賴HTTP來傳送,但是HTTP最早是設計用於網頁瀏覽器的網路通訊協定,在手機應用服務上,尤其像Line這樣需要即時性的通訊軟體,HTTP的主要限制包括傳輸效率問題、同一個TCP連線無法平行傳送多個連線請求,而且,這些請求也無法依照優先順序來排序。
陳鴻嘉解釋,HTTP每傳一次訊息都要建立一個連線,假設200萬個訊息就要200萬個連線,因而會造成龐大的流量負荷。此外,傳送訊息之前,建立TCP連線需要先有交握動作(Handshaking),就像打電話要先撥通一樣,而Handshaking往往要花費大半的時間成本,且每傳一次訊息都要重新建立連線。
他舉例,如果要傳送一筆幾KB的資料,不到1秒鐘就可以完成,但其中光是建立連線就要花500~600毫秒,真正傳資料可能只占用不到3成的時間,因此若能減少重新斷建立連線所需的時間,就能提升伺服器端及用戶端的效能。
他說,網路技術都是不斷演進而來的。如同WWW最早出現的目的是要讓文件、資訊可以容易地被共享,原本設定的使用情境是,看一頁文件,才抓取一頁文件資訊,當然不會考慮到現在手機時代的即時性訊息傳送與同步需求。
後來在HTTP 1.1版,便加入持續連線的方式(Persistent Connection),來減省傳輸時間。Persistent Connection讓用戶端與伺服器端之間的TCP連線持續不中斷,可以傳送好幾次請求,這種作法讓網頁瀏覽器可以連續看多個頁面,不用重新建立連線。
不過,陳鴻嘉說,這麼做仍然無法滿足在行動化時代的需求,因為HTTP還有一個特性是,只能由客戶端發送請求,伺服器端不能主動傳給用戶端。
因此Line採用Long Polling機制,做法是發送一個長期等待的請求,從用戶端跟伺服器端要資料,等到伺服器端資料回傳後才結束連線,然後再重新從用戶端發送1個新連線,但這麼做需要額外占用1個TCP連線,且造成長時間空等的閒置狀態。
Line把底層換成SPDY協定,再用Erlang語言改寫
為了解決更多HTTP在行動化時代的不足,Line最後決定採用新網路通訊協定SPDY,SPDY是Google在2009年所提出,用來提升HTTP的傳輸速度及安全性,同樣在TCP層之上,與HTTP同屬於應用層協定,而Line在2012年10月開始改用SPDY。
陳鴻嘉表示,Line改用SPDY通訊協定的過程可分兩階段,第一階段先拿開源的SPDY程式庫來使用,之後發現速度仍不夠快,因此第二階段,Line總部工程師再去學了Erlang語言,用Erlang語言來改寫SPDY。Erlang語言由瑞典電信公司愛立信提出,Line自行開發API閘道伺服器來支援SPDY,並以Erlang語言改寫,稱做LEGY(Line Event-delivery Gateway)。
SPDY修改了HTTP的傳輸方式,主要特點是可以多工處理(Multiplexing)、判斷請求的優先順序,並將HTTP的標頭(Header)壓縮,大幅提升速度與效能。
陳鴻嘉說,改用SPDY不只解決了伺服器端無法主動傳資料給用戶端的問題,也解決了長期占線、且同時間只能等一個訊息的限制,SPDY讓同一個TCP連線中可以平行傳送多個要求,因此,手機跟伺服器之間只需要一個通道,就能同時跑好幾個HTTP的訊息傳送連線。
他說,雖然SPDY可以大幅改善傳送效能,但懂的人不多。而大部分通訊軟體廠商也都有自己的方法,來節省TCP/IP的連線。目前有8成瀏覽器支援SPDY,而Google在今年推出的新版網路協定HTTP/2,也是基於SPDY所設計。
2大安全措施,確保訊息不外洩
除了訊息傳送速度與效能問題之外,安全性也是Line重視的一個關鍵課題,陳鴻嘉表示,Line的訊息都在安全通道上傳遞,透過類似OAuth 2.0的機制(Open Authorization,開放授權式協定)。不過,即使用戶端到伺服器端之間的通道是安全的,當訊息流經伺服器時,如果駭客入侵或是內部不肖員工躲在裡面,仍有被偷看的風險。
因此,為了更安全,Line在今年推出新Data Sealing資料密封功能,採用兩端訊息加密技術,他表示,這種作法起淵源於安全演算法中的DH密鑰交換法(Diffie Hellman Key Exchange)。
他進一步解釋,網路上要傳遞加密訊息,分為對稱性及非對稱性加密這2種,非對稱性加密不用傳送金鑰給對方,但需耗費較多的運算資源,而通訊網路有效能考量,習慣使用對稱性加密,因此,需要再傳送一把加解密的金鑰給對方,然而這個加密金鑰在傳送過程仍有被奪走的風險。
因此,DH密鑰交換法會先在兩端,用一段演算法把金鑰分成兩半,一半傳給對方,一半自己保留,兩端可以透過演算法再算出這把金鑰,即使有人從中間攔截,也只能偷取到一半的金鑰,無法將訊息解密。
不過他也說,這種加密機制會增加伺服器負荷,計算加解密金鑰要花費不少運算資源,他以過去的經驗為例,採用安全通道時,CPU要多出4成左右的運算能力。
從Web跨到行動化時代,產品、管理面差異不大,最大不同是開發的技術應用,全端工程師難尋也是一大問題。──Line臺灣區技術長陳鴻嘉
從通訊軟體轉向行動平臺化發展
不只是追求通訊軟體最重要的訊息傳送效率與安全性,Line也開始朝平臺化發展,要從通訊軟體變成一個行動化平臺。陳鴻嘉說,Line從去年開始推動行動生活入口(Mobile Gateway)的概念,並開發出一套新系統,打造一個Line Platform,要讓寫App的人可以把自己的應用跟Line平臺串接,在Line平臺上提供自家的服務。
陳鴻嘉強調,Line提供的是應用服務的串接,而不是把整個程式放到平臺上,與Google Play市集、Android開放平臺的作法不同。
他舉了一些日本企業的應用案例,像是汽車公司藉由Line平臺功能,協助車主找到車子停放位置,也有知名人力仲介公司結合Line平臺推出新服務,讓使用者透過貼圖來表達需求,可用來求職、打卡,也能結算薪資匯到指定帳戶。
國內應用案例如柯達的立可得,柯達將自己原本的沖印系統透過API與Line平臺串接,連到Line的Channel Gateway,再經過Talk Server與用戶端連接。
使用者只要到萊爾富使用Kiosk,在手機上的柯達官方帳號對話中,輸入Kiosk機器號碼,再用手機傳送照片,柯達就會把照片送到該臺機器,然後直接印出來。陳鴻嘉說,以使用者介面來看,仍然在Line的訊息對話框中,使用者會以為在跟一個人對話,實際上是和一個機器人(Bot)溝通。
他表示,Line平臺的核心概念是採用Bot,企業和Line平臺整合的方式分三種,一種是針對大型企業提供官方帳號(OA),企業使用Line寫好的後臺管理系統,也可以接到自己的內部系統;第二種是中小企業容易上手的Line@服務,使用Line提供的後臺管理功能,目前還不開放串接自己的系統﹔第三種則是完全使用企業自己的內部系統,也就是說,使用者登入Line帳號後,企業要自己管理所有系統功能,Line沒有提供後臺管理功能。
應用模式則可分為4種,第1種是在訊息視窗內的對話互動Native App,第2種是在App中顯示企業客製化的功能選單,使用者點選之後,會跳出另一個看起來像是Line的對話視窗,但其實這個對話視窗已經連到企業的內部系統。
另外2種則是使用Line提供的SDK串接自己的應用,分為Web及App兩種,運用Line的帳號登入後,再跳到企業自己的網頁或是App。
Line擁抱開源,積極採用新技術
陳鴻嘉在去年10月加入Line,負責臺灣區技術團隊,這個團隊依據不同的應用分三組,一組負責平臺推廣,一組負責開發新應用,一組負責手機遊戲。
雖然陳鴻嘉沒有參與Line過去的網路系統架構改造歷程,不過他從大學時期開始接觸網際網路技術,當時Internet才剛出現,畢業後他在系統整合商工作6年,之後在Yahoo待了十年,正好從頭到尾參與整個Web時代的技術演進。他說,軟體工程師有生命週期,不學新東西很快就會被淘汰,因此他決定從網路公司跳到行動應用軟體公司,迎接全新的挑戰。
他表示,其實過去網路公司面臨行動化時代的挑戰,也都在積極轉型,想辦法要改變內部體制,加強效率,但是轉型速度與成果有限。他進到Line之後,發現Line採用的都是最新技術,包括Agile敏捷式開發流程,以及持續整合(CI)與持續交付(CD)的方法,這些現代化的軟體開發模式與新技術,讓總部每兩、三個月就能推出新產品。
此外,他說,Line的企業文化特性是要追隨開源的腳步,相較於他自己過去所看到的,有些網路公司技術封閉,與開源世界隔離,他們會拿開源技術來重新改造成自有的版本。
跨到新行動化時代,懂底層技術的全端工程師難尋
他認為,從Web時代到行動化時代,技術底層還是一樣,產品面、管理面差異也不大,最大的不同是開發的技術應用,另外,找人才也是他遇到的一大問題。
他在建立Line的臺灣區技術團隊時發現,由於現在的軟體開發框架太完整,新一代開發行動化應用出身的工程師都不夠了解技術底層,他們使用HTTP的API,卻不知道一個HTTP協定的生命週期為何,以及如何在通訊協定上傳遞。
他表示,如果只是寫一個小App可能不需要知道這些,但是若到像Line這樣服務流量大的公司,工程師如果不懂底層技術,在寫應用時就沒有辦法考慮要用什麼方法節省流量,出現瓶頸時也很難找出問題,無法判斷效能卡在哪個環節。
還有一種現象是,他發現有些具創新力的工程師,想出來的點子和服務都很受歡迎,但是他們寫的系統一上線,流量一暴增就無法負荷。因此他們在徵才時,重視軟體工程師的工法,要找Full Stack的全端工程師,卻發現現在這類人才非常稀少。
陳鴻嘉也體悟到,過去的網路時代與新行動化時代,不只是技術,整個使用行為也已經完全不同,不能再把自己當作原本的技術人員角色,要從使用者角度重新思考,找到行動應用時代的使用者需求,再思考要達到這樣的效果,要用到什麼技術。
CTO小檔案
Line臺灣區技術長陳鴻嘉
學經歷:中央大學資訊管理研究所畢業,於系統整合商工作6年後,2004年進到Yahoo任職,期間負責過知識+、無名小站的系統規畫與開發,2012年轉任亞洲技術平臺團隊,負責超級商城等服務,並升任首席工程師,2014年10月加入Line,擔任臺灣區技術長,負責建立技術團隊,推廣Line Platform與技術支援。
公司檔案
LINE
● 成立時間:2000年成立,2013年公司名稱更名為LINE
● 業務介紹:行動傳訊軟體
● 員工人數:1,019人
● 總經理:出澤剛
● 資本額:約125億日圓
● 營收:約863億日圓(2014年)
● 網址:linecorp.com
公司大事紀
● 2011年6月:推Line行動通訊軟體
● 2012年4月:推出Line貼圖小舖
● 2013年9月:推免費視訊電話服務
● 2014年4月:首間Line Friends實體店面於南韓首爾開幕
● 2015年4月:出澤剛接任執行長
熱門新聞
2024-11-29
2024-11-20
2024-11-15
2024-11-15
2024-12-19