使用 UML 圖表達微服務 (Microservices)的架構設計

使用 UML 圖表達微服務 (Microservices)的架構設計

這裏藉由一個「放入購物車」的極小型功能案例,並利用 UML 各面向的設計圖,來表達微服務 (Microservices) 的架構規劃與設計的呈現樣貌。下列是幾個主要設計面向的設計圖 (並非是全部) 可以參考。

系統功能與實現程序

利用 UML 使用案例模型 (use case model) 與系統循序 (sequence) 圖表達「放入購物車」的系統功能與主要實現程序。

Microservices Use Case Model

Microservices System Sequence Diagram

  • 從需求模型可以看出共有兩個微服務:「Product Microservice」與「購物車 Microservice」。
  • 每一個微服務均各有資料庫,圖中可看出共有兩個。資料庫是私有倉儲,不能跨微服務直接存取 (即使位於同一區域都不行),只能透過 API 呼叫。

閱讀全文 »

聊聊關於 UML 輔導個案的二三事

** 本文同步發表於 FB社群-軟體設計鮮思維 **

聊聊關於 UML 輔導個案的二三事

前兩個星期有位上過前一期「軟體架構師」課程的學員,他在某大金融單位擔任技術職PM,特地利用週末時間到我家附近,請教我關於他利用 UML 所繪製的設計圖問題。相當認真,所以我很願意陪他一同討論軟體相關議題,順道一同在肯德基吃午餐。總共花了約兩個來小時吧,該學員還要去參加他的讀書會,真是有夠認真啊,不過起碼有討論出一個比較具代表性的使用案例其實現的主要程序描述。

畫出來是否正確或合理與否是一回事,至少他肯利用 UML 表現出他的設計思維就很值得肯定,這才有機會可以指指點點與討論的。

他只畫了使用案例圖與某一結構設計的類別圖,因爲有公司機密問題,這裏就不方便貼出他的原稿。我只就他的設計給予一些建議與修正,並利用他在 Mac 所使用的 UML 工具繪製出來。

關於 Udemy 線上課程平台課程大綱規劃與模板 (提供下載)

最近在整理原來實體課程的教材內容,準備移轉到線上教學平台上 (我的第一個線上課程應確定爲「活用 UML 體現軟體設計思維」),首先考量的應該是國外最大的教學平台 - Udemy

實體教學與線上教學肯定是截然不同的方式,前者重於與學員的「互動」,甚而需「因材施教」,動態改變課程內容;但後者並沒有可與之互動的觀衆,所以事前錄製的內容與呈現方式,以及每一個單元的主題與目標,就要相當明確了。

最主要的呈現方式當然就是視頻錄製,並可以使用如 Powerpoint 的簡報作課程大綱與內容說明,另外涉及到開發工具的操作等,就需要螢幕錄製操作步驟。每一個視頻單元,據我大量查看 Udemy 衆多課程講師,大都爲 5~10 分鐘左右,單元主題要能切中該視頻內容,可以是很通俗的命名。

與我實體課程規劃大綱的方式最大的不同是,Udemy 課程大綱主要只有兩層:Section 與 Lecture

Section 比較像是章、節的概念,而 Lecture 與傳統書籍大綱內的小節觀念可能不大相同,它要呈現的是一個講課、講座、講稿這樣的概念。

Section 比較容易界定,一個「章/節」的目標 (objective) 明確就沒有問題。而 Lecture 我是很不習慣,主要就在於要配合視頻 5~10 分鐘內的長度,所以以前的小節觀念,需要分割或合併,但要給予一個清晰的 Lecture 講座名稱,有時沒想像得簡單。

閱讀全文 »

關於 DDD (Domain Driven Development) 微服務的結構設計議題

** 本文同步發表於 FB社群-軟體設計鮮思維 **

最近在線上輔導了一位 技術職PM 結構設計的實現 (Realization)議題,他傳給我 DDD 的架構圖,覺得在「Domain Service」與「Domain Model」的責任界定上,觀念不是很清楚。

嗯,其實這所謂的 DDD (Domain Driven Development) 架構圖根本就是典型 3-tier (Presentation-Application Logic-Data Source) 分層結構呈現爲圓形的剝洋蔥層次而已,越是內層 (Domain Model) 越代表爲系統的核心。
關於 DDD (Domain Driven Development) 微服務的結構設計議題

工程師從這張圖往往會認爲「Domain Model」是最重要的核心觀念。是這樣沒錯,但對以「需求爲導向」的專案開發性質,它卻反而沒那麼重要!況且結構設計的基礎功夫要很紮實,封裝-介面-多型 諸多「虛」的設計觀念確實能充分了解並能整合活用,沒有花上 5-10 年以上功夫,是不容易應用在現實的系統開發上的。相對於此,「Domain Service」對現實的專案開發可是更切實際,且結構設計上的觀念也會比較容易入手。

閱讀全文 »

Manjaro 18 安裝 XAMPP – WordPress 本機開發環境

WordPress 寄放於遠端虛擬主機廠商,而希望在本機具有開發 Web 的環境,我自己是安裝了虛擬機的 Manjaro (安裝版本 18) 類 Arch Linux 系統,但我實在不想再重新一個個安裝與設定相關 LAMP (Linux, Apache, MySQL, PHP) 開發環境,所以找尋有否已整合好的開發套件。

以前我就在 Windows-based 安裝過 XAMPP,原來也有適用於 Manjaro 的系統,但需要手動安裝 (也可以透過 AUR 安裝,但建構過程出現問題),不過安裝過程倒是非常簡單。

稍微注意下,是從 MySQL 被 Oracle 併購之後,開源組織應該是擔心後續的商業利益問題,因而復刻了一個幾乎等同於 MySQL 的 MariaDB,所以安裝 XAMPP 目前版本後的資料庫是 MariaDB 而非 MySQL。原來我是有些擔心因爲主機商提供的仍是 MySQL,而在本機安裝的卻是 MariaDB,不知 WordPress 是否會有相容的問題,但爬文後普遍看來是沒啥問題,所以就先給安裝下去,留待後續再查看是否有資料庫相容性問題。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal