想想也很久沒參加技術相關的場子,剛好 Amazon AWS Cloud Kata 和 Google I/O Extended Taipei 在同一天舉行,索性請個假,兩場都衝了。一整天下來,一則以喜一則以憂。喜的是又學到、玩到很多新東西。憂的是關在公司久了,都不知道外面的世界已經進展到這個程度,真令人感到彷徨。
在 AWS Kata,主要獲得兩大震撼。第一是 server 系統層面模組化並且權責切分乾淨這件事(重點在切乾淨),第二是 deployment 方式的改觀。
在建構一個全新的系統時,比較有遠見的做法是每個 component 都各建一個,當系統漸漸不敷使用時,把 component 直接 clone 一份即可。但往往開發時求方便,有時候會有 component 權責不分的情況,例如存了一些需要長久保存的東西在 compute 裡面,問題就來了。如果這時候有兩個 compute,要嘛同樣的東西都必須存在兩個 compute 裡面,要嘛兩個 compute 彼此之間還需要額外的溝通,總之,怎麼做都不太對勁。如果權責切乾淨,長久保存的東西存在 storage 或 DB 裡,就沒這個問題了,compute 要東西就去拉,運算完就把所有記憶都忘記,繼續下一筆工作。話雖如此,現實生活中變數太多,時程壓力、每個人對乾淨程度要求不一、預算上的考量等,切乾淨這件事還是頗不容易就是了。
系統層面模組化示意圖。
關於 deployment 方式,講者舉了一個 Netflix 的例子,真的是有被震撼到。萬萬沒想到 Netflix 竟然是以 machine image 當作 deployment 的單位,要上新 code,就建一個 image,從底層的 OS 到上層的 application 一整包放上去開機,慢慢把流量導過來,然後再把舊的 image 關機下架。這樣的好處是擴充或是系統出狀況的時候超級無敵方便,一個步驟:開 image,done!還有一個外加的好處就是完全不會有 memory leak 的問題,因為平均每個 image 存在時間只有 36 小時,還來不及 leak 就被關掉了。真是高招啊!
三種 deployment 方式說明,震撼的是最左邊的 Netflix 絕招。
在 Google I/O Extended,除了第一次進傳說中的 Google 辦公室參觀外,也是第一次玩到傳說中的 Google Glass。實際戴上才發現,Google Glass 需要橋到某個角度才看得到螢幕,稍微歪一點也不行,這是比較小失望的部分。由於後面有人排著想玩,草草下了人生第一句 Google Glass 的指令:"OK! Glass! Take a picture.",就交給下一位了。據說基於法律問題,不開放在場人士拍攝 Google Glass 實機,也就沒辦法記錄自己戴著 Google Glass 的英姿了。
另一個震撼,是 Google BigQuery 這個東西。兼具 Big Data、realtime、SQL 這三個特色,過去頗夯的 MapReduce 竟然已經成為不 realtime 又頂多支援跛腳 SQL 的傳統過去式了。其餘有提到像是 Apps Scripts 之類的小玩具,有空再來玩玩。至於真正的重頭戲 Google I/O 現場直播,由於要趕在捷運收班前搭上車回南港,只好留待之後再看相關報導或是重播影片了。
Google 辦公室夜景及玻璃反射的會議室。