Metrics

歡迎各位來到首屆的 Java Community Conference ,我是何永琳,目前於飛向科技擔任工頭,所謂的工頭,就是做
大家做的事跟做大家不喜歡做的事,什麼是大家不喜歡做的事呢?那就是管上線機器的大大小小問題。

在我們開始之前,先岔題一下,大家都是工程師,(放someone on the internet is wrong)應該都有些大大小小的睡
眠問題,過去我一直以為我一天有睡到七小時,一直到去年穿戴式配備的興起,我買了個 Jawbone 來戴(放 Jawbone Up的圖片),
才知道我一天只睡六小時左右,中間的睡眠品質不佳。有了 Jawbone Up 天天計錄我的生活起居狀況,我才了解到自己真
正的狀況,才能著手改善問題。

上面的故事,就是今天講題的主軸 測量 / metrics

在軟體開發的過程中,程式的編寫,其實只在軟體生命週期的很小一塊,在經過數個禮拜至數週的開發及測試後,軟體就
被佈屬到線上環境中,在過去,可能是放在公司的機房中或是資料中心,現在則是被放到雲端平台之上,總之,你細心開
發的軟體,將要被真實世界開始摧殘。

在一個軟體的生命週期中,他可能會碰上大量的用戶擁入,也可能跑了數十天沒有重開,也有可能在臨晨三點碰上資料庫
備份,當然也有可能每兩個禮拜碰上其它整個的 REST API 不穩的狀況,在他跑了一兩年後,有可能被換到新的硬體上。

問題在於,你有沒有辦法知道這些狀況會不會出現,如果出現了,你能不能知道發生了什麼事;而且在這些狀況下,你的
應用程式會出什麼怪手?是全面性的慢下來、還是不可預期的某些 Thread 才慢些來,或者是,你的應用程式可以輕鬆
應付這些狀況,不用你擔心。

如果上線的系統不能應付這些狀況,你要做出什麼相對應的調整呢??

Metrics By Codahale

Metrics 一套是由 Codahale 在 2011 公布出來的 Opensource 專案,自此之後,因為他的 API 設計精良又容
易跟其它的外部程式整合,所以開始被業界所採用。

http://codahale.com/codeconf-2011-04-09-metrics-metrics-everywhere.pdf

為什麼我們需要測量的原因

手動調整

Iterative tuning -> 建立假設 -> 重建問題 -> 提出對應 -> 修理 -> 驗證