上一篇說明了微服務架構的好處,這篇來談談該如何做。其實說穿了很簡單,不就把大型的單體式 應用程式,拆成幾個獨立的服務不就行了? 這樣講沒錯,不過關鍵就在於你這刀應該怎麼切,該往哪邊切? 切出來的服務能不能再繼續切? 有沒有哪些服務是切過頭的,需要重新合併成一個大的?
其實軟體開發的觀念,說穿了都很類似。微服務其實就是更進一步的模組化。一般的模組化只是 code 層級的隔離, 而微服務化則是更強的網路層級隔離。很多軟體設計的概念都是互通的,今天要探討的就是 “重構”。當你的程式碼 架構良好的時候,不僅 code 維護容易,要切割出獨立的服務也會相對輕鬆。因此,不論你打算做甚麼架構調整, 我通常會做的第一步就是 “程式碼重構” !!
這篇我先跳過評估及決定服務邊界的問題,先從最基本的程式碼體質改善做起。體質良好你想怎麼改都很 容易。這篇就先藉由重構,說明把一些顯而易見的服務切割出來的過程。
自從發現了 GitHub Pages 這好用的服務,原來是源自 Jekyll 這 open source project 後,想說靜態網站產生器這麼好的東西, 怎麼沒人拿來用在 NAS 上? 與其在 NAS 貧弱的硬體上面,安裝 wordpress, 還不如在上面放靜態的 HTML 來的快速且安全。不過順手 Google 了一下,還真的沒什麼人這樣用,於是一時手癢,就…
想想我開始寫 blog 的這十幾年 (Orz, 這麼久了),用的部落格系統也換了不少套了, 從最早我自己土炮寫的 asp.net 1.1 blog 開始算, 中間光是系統就換了 5 套, 還不包括 同一套系統的版本升級… 這些 post 都還能留下來也真算是奇蹟了.. 不過再怎麼換, 終究是有套 “系統” 需要去維護,不管是自己管還是代管都一樣,開始想走純樸路線,省點 運算資源,好好照顧一下北極熊…
於是就決定改採最低科技的路線,丟掉所有的 “系統”,直接採用最單純的靜態檔案。至於 Hosting 的方式,就用最宅的 GitHub 附屬的服務: GitHub Pages… 現在流行什麼都冠上 xxxx as code, 那就來個 blogging as code 吧 XD
八月底,接受了 Microsoft 的邀請,參加了 Community Open Camp 研討會,講了這場 “微服務架構 導入經驗分享 - .NET + Windows Container”。 其實這個主題涵蓋範圍還蠻大的,不過我一直認為,container 技術單獨介紹的話,那他就是個技術而已,若從他存在的目的來介紹,那他就是能解決 問題的好東西。因此我特地訂了這個主題: container + microservices.
原本,Windows Container 單純就我自己研究而已,因為工作上用到的都是 ASP.NET Web Form 居多 (有部分早已轉移 到 MVC,但是主要還是 WebForm),加上商用軟體,用到一堆外面的第三方套件,想要藉由升級到 .NET Core, 然後直接 享用 Docker 帶來的一堆好處,那真的是想都不用想了… 所以前陣子研究完 .NET Core, 把我想搞懂的 都弄清楚後,就把重心移到 Windows Container, 這個實際一點,目前的 Legacy Windows Application 都可以在上面用,只要 耐心等 Windows Server 2016 上市就可以了..
不過,有幸參加了 8/27 Community Open Camp 活動,擔任 一場 session speaker 後發現, 其實還不少人對 Windows Container 有興趣的,不論是學員還是講師… 但是因為用的人還不多,而且到現在也還只有 Tech Preview 5 .. 使用起來還不少問題,現在切入是得花點時間克服障礙的。
既然我都花時間搞懂了,我就把官方 FAQ 沒告訴你的部分紀錄一下吧~ 如果有你想知道的,官網跟我這篇都沒講,歡迎底下留言,我再補上來~