軟體架構・絮語

Automate everything, make life easier!

錯誤處理需要全盤策略

繼上次讀書會之後,最近在替團隊安排第二次讀書會的材料。 這次我選擇的主題是【軟體品質講座】。 在蒐集、自炊閱讀材料的過程中,腦中一直想到當年翻譯 The C++ Programming Language 時,一直被洗腦的「要以階層方式、全盤角度考量錯誤處理」觀點,以及對 defensive programming 的保留態度。 搞定這麼一疊閱讀材料後,順便把以前 The C++ Programming Language 的說法調閱出來,做個對照。近 20 年前的觀點,現在來看,仍不過時。搭配這次讀書會精心蒐集的材料,對這種「階層方式、全盤角度」的觀點,掌握得又更徹底了。 以下摘錄...

READ MORE

從 Ansible 到 Docker:混血模式

自從 2015 年 4 月在 Docker Taipei 社群講了一場〈追求極簡化 Docker image 之路〉之後,在「極簡化 Docker」這條路上,另一條途徑 Alpine Linux 開始嶄露頭角。這種方式,漸漸凌駕過去蠻幹的手法,地雷減少,有顯著的流程優勢,品質上也不見得遜於長期被 glibc 把持的傳統體系。 我嘗試用這種手法重整過去的東西,得到還不算太差的結果。因此,一直希望能有機會再給一場類似【追求極簡化 Docker image 之路,Part 2】的演講。 此外,由於自己持續在使用 Ansible 來處理組態設定事宜,持續維護近 20 個 Ansible...

READ MORE

為什麼要追求極簡化的 Docker image?

今早在 Community Open Camp 的【從 Ansible 到 Docker:混血模式】演講過後,有人在聊天室提問: 請問為什麼要追求最小化的 Docker image? 其實,去年我在 Docker Taipei 社群主講〈追求極簡化 Docker image 之路〉的時候,曾如此開場:「一部分原因,是技術性的探討。經過這番探討,對 Docker 底層機制會掌握得更深刻,有助於更善用 Docker,也很自然會理解 Docker 與 VM 的明顯差別在哪裡。」 當然啦,那是一種極度保守的理由。因為在當時,「極簡化...

READ MORE

系統思考及換位思考,一例

其一 過去這一年,我針對 monitoring 議題發表兩次演講:〈Whoscall 的 Realtime Monitoring 經驗分享〉及〈Monitoring 改造計畫:流程觀點〉,可看出那段日子我的關注重點。 Monitoring,在傳統 value stream 來看,是偏向 Ops 這一端,發揮空間狀似沒有像 Dev 那麼寬廣。 其實不然。站在 monitoring 這個制高點,幫助我更深刻體會 lean thinking 及 TOC 都很注重的 “flow”。 以此視野看系統,我看到某些 services 問題,需要從研發環節下手,甚至是要將 QA 或 QC...

READ MORE

Docker 端出 Unikernel 路線的第一道菜

Docker 在三歲生日派對時,宣佈要提供「不須透過 VirtualBox」的 Docker engine for Mac/Windows,許多人方才驚覺:今年一月併購 Unikernel Systems 公司,原來早就隱含著這麼一層用意。 [1] Unikernel Systems 這家公司,代表作是 Xen 陣營的 MirageOS;因此,併購之後,Docker Inc 已充分掌握古代的 hypervisor 及現代的 unikernel 技術,更朝向技術自主的獨立路線邁進。 我一直認為,Docker 這家公司,對技術路線有非常獨到的眼光。 就像當年 Docker 先以 LXC...

READ MORE

在 Windows 上也能使用 Ansible 的方法

帶實作課程時,常常遇到兩個問題: 問題一:在 Windows 上面想使用 Ansible control machine,有沒有地雷比較少的方法? 問題二:在 Windows 上面使用 Vagrant 的時候,也有一個常見的困擾:原本 Vagrant 方便的 provisioner 功夫被廢了。 針對這兩個問題,我設計一個 Vagrant box 及一個小工具。 以下是一段大約 14 分鐘的教學影片,示範如何透過 VM 來使用 Ansible control machine,以及如何彌補 Vagrant 的 Ansible provisioner...

READ MORE

Vagrant 安裝說明

我帶的許多實作課程,都需要用到 Vagrant 及相關的配套軟體。 為了方便學員事先安裝,我將安裝步驟整理成三篇文章: 在 Windows 上安裝 Vagrant 軟體 在 Mac OS X 上安裝 Vagrant 軟體 在 Linux 上安裝 Vagrant 軟體 註:Vagrant 1.8 新提供一個功能:如果你沒有安裝過 VirtualBox(或其他可與 Vagrant 搭配的虛擬機軟體),那麼,在第一次執行 vagrant up 時,Vagrant 會設法自動幫你下載、安裝某個版本的...

READ MORE

在 Windows 上安裝 Vagrant 軟體

在 Windows 上,如果想使用 Vagrant 的話,需依序安裝以下軟體: VirtualBox 及 VirtualBox Extension Pack Vagrant 純命令列的 ssh 程式 以下分別介紹各軟體的安裝方法,以及可能的問題排除方法。 【2015-12-22 補充】Vagrant 1.8 新增一個功能:如果你沒有安裝過 VirtualBox(或其他可與 Vagrant 搭配的虛擬機軟體),那麼,在第一次執行 vagrant up 時,Vagrant 會設法自動幫你下載、安裝某個版本的...

READ MORE

在 Linux 上安裝 Vagrant 軟體

在 Linux 上,如果想使用 Vagrant 的話,需依序安裝以下軟體: VirtualBox VirtualBox Extension Pack Vagrant 以下分別介紹各軟體的安裝方法。 【2015-12-22 補充】Vagrant 1.8 新增一個功能:如果你沒有安裝過 VirtualBox(或其他可與 Vagrant 搭配的虛擬機軟體),那麼,在第一次執行 vagrant up 時,Vagrant 會設法自動幫你下載、安裝某個版本的 VirtualBox。這功能看似方便,但經我初步實測,很容易有莫名其妙的問題。所以,我仍然建議你親自安裝...

READ MORE

在 Mac OS X 上安裝 Vagrant 軟體

在 Mac OS X 上,如果想使用 Vagrant 的話,需依序安裝以下軟體: VirtualBox 及 VirtualBox Extension Pack Vagrant 以下分別介紹各軟體的安裝方法。 【2015-12-22 補充】Vagrant 1.8 新增一個功能:如果你沒有安裝過 VirtualBox(或其他可與 Vagrant 搭配的虛擬機軟體),那麼,在第一次執行 vagrant up 時,Vagrant 會設法自動幫你下載、安裝某個版本的 VirtualBox。這功能看似方便,但經我初步實測,很容易有莫名其妙的問題。所以,我仍然建議你親自安裝...

READ MORE