將此篇文章跟 Facebook 上的朋友分享將此篇文章跟 Plurk 上的朋友分享將此篇文章跟 Twitter 上的朋友分享列印轉寄
2018/1/8

從Mosaic一路學習到雲平台 總有意外收穫其實不意外

秉持信念、熱情不滅 鄭淳尹Docker領域展長才

洪羿漣
在台灣開源社群中,論及Docker技術領域,鄭淳尹(Philipz)於許多人心目中堪稱第一把交椅,不僅翻譯過多本暢銷書例如《Docker錦囊妙計》、《基礎架構即程式碼》等,平時工作之餘亦樂於參加COSCUP開源人年會等各種社群活動分享所學,也是目前《網管人雜誌》Docker技術專欄的作者。
IT基礎架構從虛擬化平台演進到容器(Container)技術應用,就鄭淳尹來看,可說是由技術人員而非商業決策發起的變革,畢竟對企業高層而言,只要能符合營運所需就是可用的技術,因此逐漸轉變思維接受開放原始碼。問題是,只要提及「開源」,多數人的認知是等同於「不用花錢」,實際上的狀況並非如此。

他進一步提到,當然應用軟體本身確實可免費使用,但是技術服務的成本絕對無可避免仍須仰賴專業廠商協助,即便台灣的企業主已可接受公司核心系統採用開放原始碼打造,但要扭轉全部零成本的誤解,仍需要一段時間。

不論開源或套裝軟體,只是商業模式的不同,實際上並無二致。套裝軟體是先採購才得以使用,而開源軟體則是讓用戶先用,運行之後再視需要支出技術支援費用。因此可發現愈來愈多廠商轉型擁抱開放陣營,即是著眼於此。Docker、Hadoop等從開放原始碼專案中發跡的技術皆是典型案例,畢竟應用系統的穩定性仍需要維護,勢必得有專業技術支援協助持續改善,一旦攸關正常營運業務時,企業自然會編列預算尋求支援。

意外機遇學習程式撰寫技能

▲鄭淳尹認為,Docker真正的創新在於應用程式容器,將軟體架構去耦合化,一旦出現效能吃緊,直接增添即可橫向擴充,藉此實踐持續整合/持續發布。
目前任職於台北榮總擔任資訊工程師的鄭淳尹,已經累積十多年的系統維護與開發經驗,面對新技術始終保持好奇心,培養出主動接觸與學習的習慣,他自認應歸功於學生時期奠定的基礎。他在就讀宜蘭農工專科學校(現已改制為宜蘭大學)土木工程學系時,對於未來原本沒有太多想法,正好當時網際網路剛出現,開始透過數據機撥接連線,以終端機登入學術網路閱讀文章。之後全球首度出現Mosaic網頁瀏覽器,可下載安裝在Windows 3.1作業系統,以圖文頁面呈現,帶給學生時期的鄭淳尹相當大的震撼,深受吸引而投入鑽研,在專科畢業成果展就已經運用VRML語言實作土木製圖。

當兵退役後,他更是毅然決然攻讀二技資管系,晚上到補習班準備考試,白天在電腦公司打工從事維修工作,卻意外奠定了對硬體組成元件的基礎概念。「所幸藉此摸熟了電腦硬體,若欠缺這方面的概念,在撰寫程式時,有時會把事情想得太複雜,其實只要抽離現有複雜的環境,經過比對後即可查找到錯誤之處。」

有趣的是,早在就讀二技期間,鄭淳尹就已踏入今日正夯的「臉部辨識」領域。他回憶,考上二技後正好遇到技職學校開放升格成為科技大學,老師大多會要求學生們進行研究、撰寫論文,雖然唸的是資管系,研究領域卻是臉部偵測,運用演算法執行影像處理,實屬資工系的範疇。「或許是我報考前就已經確立自己的志向,儘管唸的是資管系,卻也樂於學習撰寫程式碼,雖然深入研究的過程很辛苦,對原非資訊科系出身的我來說,卻是可遇不可求的機會。」

但是二技的學歷在當年的職場並不受歡迎,普遍條件要求為大學或相關證照,於是鄭淳尹也成功考取CCNA證照,並且順利進入Acer eDC(安碁資訊)擔任資料中心維運工作。「大約一年後就體認到輪班的工作不適合我,正在徬徨之際收到二技老師通知研究報告已發表於期刊,我也順勢藉此推甄研究所,後來選擇了有提供獎學金的元智資工所的軟體工程。」他笑著說。

當時軟體工程學習的是統一建模語言(UML),研究關鍵系統的案例之一即為鍋爐,萬一建模設計上有漏洞,可能會導致爆炸,但是在設計當下無法察覺缺失,必須透過模型檢測(Model Checking)進行自動驗證,詢問工具是否會發生爆炸的狀態進行確認。

研究所畢業後找工作的條件則以穩定性為優先,希望在有規模的制度運行下能有時間學習更多專業知識,因此選擇銀行的資訊處待了四年多,負責核心網銀系統,學習大型主機的COBOL技術,對鄭淳尹而言同樣是難得的契機。但是在2008年金融海嘯,全球銀行業受到不小衝擊,經過許久評估,鄭淳尹決定轉職投入沒有景氣好壞之分的醫療業,於是自2008年進入台北榮總服務至今,同樣是維護運行HIS醫療資訊系統的大型主機。

秉持一次開發、多平台運行的信念

從去年(2017)國際IT大廠開始支援Docker,容器技術已是現代IT人員不得不重視的議題。鄭淳尹發現,早在Docker於2013年出現時,就已備受開放社群關注,在不需要額外的環境配置下,只要透過「docker pull」指令即可下載取得所需要的映像檔。

「由於開放原始碼專案釋出的軟體項目類型相當多,各個運行環境皆不同,要學習調整參數值,勢必得投入相當多時間,Docker居然只透過Pull指令下載映像檔即可運行,不僅是令人驚豔,同時也十分認同發展初期所提出的『The Matrix of Hell』理念,完全符合我學習Java程式語言的初衷,要以最小的開發投入,在最多的平台環境運行。」鄭淳尹強調。

只可惜Java並未實現這個理想,不同的平台釋出的JDK套件,往往有包含自家運行邏輯,需要花費許多時間找到調整的技巧。如今企業走向雲端也碰到類似的困境,例如原始開發環境在筆電,完成後上傳到測試環境,又要重新調整運行環境,儘管可運用伺服器虛擬化技術執行打包來解決,可是直接遷移上雲端又未必能相容,如此情況下,倒不如原生開發環境就在雲端平台,以免遷移耗費過多時間修改,耽誤了應用服務上線時間。

容器技術則是換一種思維來設計封裝程式,其實早期就有FreeBSD Jails、OpenVZ等技術出現,之所以直到Docker問世才受到社群開發者歡迎,鄭淳尹觀察,收容映像檔的Docker Hub可說功不可沒,讓開發者可自由上傳分享作品或下載現成映像檔。當然,最重要的關鍵還是Docker指令沿襲Linux,讓已習慣指令操作模式的技術人員得以快速入門。在擁有相同理念的社群推廣之下,時至今日,Docker已取得市場接受,成為不容小覷的系統環境。

這篇文章讓你覺得滿意不滿意
送出
相關文章
部署Docker Compose 實例示範定義檔撰寫
2017 紅帽論壇:開源創新 始於個人
由維運者賦予開發者體驗 實踐DevOps有捷徑
無望多銷難守薄利 x86伺服器升規喊漲
正確撰寫Dockerfile 製作最好用容器映像檔
留言
顯示暱稱:
留言內容:
送出
熱門點閱文章