蔡學鏞 對於雲端架構 的開發、設計整理出來得文章,有空可以參考看看。
現在有哪些雲端服務的定義:
- PaaS (platform as a service):雲端運算服務,提供運算平台與解決方案服務
- IaaS (Infrastructure as a Service):是消費者使用處理、儲存、網路以及各種基礎運算資源,部署與執行作業系統或應用程式等各種軟體
- SaaS (Software as a Service):即需即用軟體(一經要求,即可使用),軟體僅需透過網際網路,而不須
透過安裝即可使用。用戶通常使用精簡客戶端經由一個網頁瀏覽器來訪問軟體即服務 - FaaS (Function as a Service):FaaS 就是將程式拆成各自獨立的功能,各個程式之間互相沒有關聯
- BaaS (Backend as a Service):用 Open API 來用開發服務,像是用戶的身份認證,這兩種雲端設計方式可以讓程式更加自動化,減少程式運作維護的工作量,也讓程式設計師可以不用考量系統流量瞬間爆量的問題
好文:蔡學鏞 純雲架構的5大架構秘訣公開
下述整理自此篇文章:蔡學鏞:別再用物件導向,純雲架構最好改用函數式設計,5大架構秘訣公開
蔡學鏞將雲端程式設計分成 Who 、 What 和 How ,設計程式時分為下述兩種工程師:
- 程式設計師:負責設計與業務領域相關的功能,設計的方式則可用領域導向的方式(Domain Driven Design, DDD)的方式
- 架構師:以系統運作為導向的設計,包括系統的負載量、安全性等,他建議可用的設計方式是Patterns of Enterprise Application Architecture(PEAA)
物件導向為何不適合雲端開發
- 過去傳統的程式設計方法已經不管用,主要是因為傳統的物件導向程式設計的結構有些問題,他指出,以前的程式設計都將業務和資料緊緊地綁在一起,但是綁在一起的作法並不適合雲端平臺,物件導向的觀念在敏捷開發也完全不適合。
- 法規和業務調整的變動也會影響著前端的服務模組、API,以及後端調用資料庫和串連外部系統的設計,還有 FaaS 的設計強調沒有狀態 (State),但是物件導向的物件都是有狀態,他建議,企業若要使用雲端,則要使用函數式的程式設計。
蔡學鏞歸納出五個函數式程式設計的原則
- 設計業務功能的模組要分開,且分的越細越好
- 採用非同步的調用方式,讓程式無需等待被調用函數的返回值,就讓程式繼續執行
- 資料最終一致化就好,不需要每筆資料都變成即時交易
- 盡量將功能都 API 化,甚至他建議可以先從外圍的 Interface 開始設計
- 物件必須是無狀態,這樣系統面對較高的流量,就能同時開啟多個 Instance
資料層面
- 資料的釐清:工程師則是可以透過技術或是統計的方式來理解,像是調用資料的頻率、資料筆數、資料老化現象等,他認為,只要是透過技術可以了解的,就能將規則用成通用的方式放在雲端平臺
- ex: 火車時刻表屬於不容易變動的資料,就不需要頻繁地調用資料,避免浪費調用的成本
- 資料的互相調用:調用資料時除了可以用密碼的方式確保安全性之外,其實還可以用Attribute-Based Access Control的方式,利用調用和被調用的資料都有各自專屬屬性的特性,來做精細的比對