Saturday, January 12, 2019

Erlang 的啟發 --- part 5

如果要做分散式系統,可以有哪些選項?
(1) FaaS
(2) Microservices + PaaS
(3) Elixir umbrella apps

有時候想想這個問題,似乎就跟做網站/網頁/ web applications  要用什麼解法一樣?
(1) 找個 wix/weebly 之類的 site builder --- 全圖型化操作
(2) Drupal/Wordpress/Joomla + shared hosting
(3) PHP/RoR/Node.js

=> 愈往上就愈依賴特定公司的 solutions 、愈下方則愈接近 hacker 的 solutions 。

< 如何在 Applications 增加 periodic task >
之前有一回我布署了一個 Riemann 的程式、這個程式它需要一個 periodic task 。那時我沒有多想,就隨手寫了 python script ,然後用 cronjob 來布署。日後再想想那回做的東西,覺得似乎不是很好的作法。

既然 Riemann 是用 Clojure 寫的。 periodic task 其實我直接在 Riemann 生成 thread 就可以處理了。把明明可以用 application 做完的事、緊密相關的服務、需要一併布署的功能,拆到用 OS 的 cronjob 來做 --- 在開發上容易一些些,因為我對 cronjob 比較熟悉一些、但是在布署上,似乎是更麻煩。

所以兩種不同的解法主要來自於兩個問題:
(1) Development complexity v.s. Operational complexity
(2) Law of the instrument --- If all you have is a hammer, everything looks like a nail.