# 第 1 節:Introduction ## Introduction ### 成為解決方案架構師的轉職動機與導向 * 適合希望從資深開發者轉職為解決方案架構師的人 * 導入如何理解並實作滿足企業需求的解決方案架構 * 提供導師制學習與實務指導 ### 講師背景簡介 * 擁有約 29 年開發經驗,歷經各種規模的企業 * 9 年擔任解決方案與企業架構師 * 熟悉從業務需求出發的架構設計與實作 ### 解決方案架構的核心重點 * 如何理解業務需求並轉換為技術解決方案 * 提出多種技術選項供企業評估實作方案 * 採用解決方案架構的原則、模式與實務 ### 現代架構實作經驗分享 * 熟悉微服務、容器、Kubernetes 等現代架構 * 曾實作 AWS Fargate、Azure 及 AWS 等雲端平台解決方案 * 擁有跨平台、跨環境(雲端/地端)的實作經驗 ### 課程涵蓋與價值 * 不侷限於特定平台(AWS、Azure、GCP 等) * 強調通用的解決方案架構設計與實務 * 適用於地端部署、雲端部署與各種開發流程(如 Agile) ### 對目標學員的建議與支持 * 協助評估是否持續走技術路線或轉向管理職 * 針對已有開發經驗者提供架構師所需的能力轉換 * 提供與講師互動的機會,強調實戰導向的學習模式 ## Prerequisites and Course Objectives ### 課程概覽與教學方式 * 本課程為實務導向的解決方案架構課程 * 使用專案團隊或 Scrum 團隊為情境,模擬真實情境學習 * 各角色將在後續影片中介紹,並說明各自負責的架構部分 ### 適合對象與必要條件 * IT 領域工作經驗至少 8 年(建議 10–15 年以上) * 至少 8 年以上應用程式開發經驗,不限語言 * 熟悉軟體設計技術(如 UML) * 熟悉資料庫技術(如 SQL 或其他關聯式資料庫) * 熟悉整合技術(如 API、ESB、ETL 工具) * 基本 IT 安全知識(如認證、授權、加密、雜湊等) * 具備網路知識(DMZ、協定、子網等) * 熟悉基礎設施(Windows Server、Linux、Unix 及部署流程) ### 架構師的核心能力 * 必須能與 IT 與業務各方利害關係人溝通 * 應具備說服與引導能力,能夠協助並領導他人 * 具備廣泛知識背景,為全方位協作角色 ### 課程需求與學習資源 * 一台個人電腦 * 穩定的網際網路連線 * 寫筆記工具(白板、筆記紙等) ### 課程目標與內容架構 * 探討解決方案架構實務與基礎原則 * 涵蓋建模技術、架構產出物、範本與文件使用方式 * 說明如何與利害關係人合作 * 建立一個實際的解決方案架構文件,逐步完成 * 展示雲端(Azure)與地端部署架構模型與流程 ### 最終作業與學習成效 * 課程末需完成一份完整的解決方案架構文件 * 將針對每個部分提供改進建議與實務回饋 ### 附加資源與導師支持 * 提供架構視覺化模板與完整範例文件 * 分享講師自身在 Agile 團隊擔任架構師的經驗 * 教授在 Scrum 團隊中擔任架構師的角色與日常活動 * 提供導師指導,協助學員完成職涯轉型 ### 鼓勵參與 * 課程包含豐富實務內容與導師支持,適合希望轉型為架構師的開發者加入學習旅程 # 第 2 節:Software Architecture Practices ## Enterprise Architecture vs Solution Architecture ### 架構師類型總覽 * 本段目的是說明各類型架構師的區別,特別是企業架構師與解決方案架構師 * 透過建築領域的類比幫助理解角色差異 ### 企業架構師(Enterprise Architect) * 類比為城市規劃師,負責整體策略與藍圖規劃 * 著重於企業的全貌與長遠規劃 * 涉及所有應用系統、商業流程與 IT 基礎設施 * 將企業策略與 IT 系統對齊,屬於戰略層級的角色 ### 解決方案架構師(Solution Architect) * 類比為建築師設計單棟建築 * 專注於特定業務問題的解決方案設計 * 涉及商業面、資料面、系統與技術面整合 * 負責將需求轉換為技術可行的架構方案 ### 其他常見架構師類型(依組織而異) * **業務架構師(Business Architect)**:聚焦業務流程與價值鏈設計 * **領域架構師(Domain Architect)**:專精於特定領域如零售、金融等 * **基礎設施架構師(Infrastructure Architect)**:專注於伺服器、網路、儲存等 * **資安架構師(Security Architect)**:負責資安政策、控管與實作架構 * **雲端架構師(Cloud Architect)**:根據雲端平台(如 AWS、Azure)設計雲端解決方案 * **應用架構師(Application Architect)**:專注於應用系統的架構設計與開發標準 * **資料架構師(Data Architect)**:設計資料結構、倉儲、流通與治理 ### 後續內容說明 * 未來章節將進一步說明解決方案架構師的詳細內容 * 包含 TOGAF 架構框架如何應用於解決方案設計 ## IT Architecture Frameworks ### 架構師應理解的架構框架 * 解決方案架構師需具備對各種企業架構框架的基本認識 * 架構框架有助於標準化設計流程與產出物 ### TOGAF(The Open Group Architecture Framework) * 免費開放給組織使用 * 包含完整方法論與支援工具,用以發展企業架構 * 架構開發方法(ADM)定義建構流程、原則與建構區塊 * 架構內容框架:定義交付物、構件與建構區塊 * 參考模型:提供平台服務、業界架構模型範本 * 架構連續體:從抽象概念進化到具體、可重用的組織資產 * 架構能力框架:定義實作架構功能所需的組織結構、角色與技能 ### Zachman Framework * 為分類與組織設計產出物的邏輯結構 * 問題維度:What、How、Where、Who、When、Why * 觀點維度:Scope(範圍)、Business Model、System Model、Technology Model、Detailed Representation * 採用工程領域的設計分類方式,應用於資訊系統建構 ### FEAF(Federal Enterprise Architecture Framework) * 由美國聯邦政府於 2006 年制定 * 整合策略、業務與技術管理 * 支援組織在設計與績效改進中的整體協調 ### Gartner 架構實務 * 定義企業架構最佳實務,整合於顧問服務流程中 * 非框架式,強調實務導向與商業價值鏈連結 ### ArchiMate * 架構建模語言,由 The Open Group 推出 * 區分為:業務層、資料層、應用層與技術層 * 支援展示資訊流、行為、架構與部署結構 * 雖具備完整建模能力,但學習曲線較高,本課程不採用 ### C4 Model(本課程採用方式) * 簡單易懂的解決方案建模方式 * 層級劃分:Context、Container、Component、Code * 聚焦於使用者、Web 應用、API、資料庫、服務等互動關係 * 本課程將實作實例並使用 Draw\.io 工具建模 ### UML(Unified Modeling Language)基礎 * 傳統系統設計建模工具 * 行為圖:Use Case、Sequence、Activity、Interaction、Timing 等 * 結構圖:Class、Component、Object、Package、Composite Structure 等 * 架構層常用 Use Case、Sequence Diagram、Component Diagram 與 Class Diagram 作為輔助說明工具 ## 測驗:Enterprise Architecture vs Solution Architecture ## 測驗:IT Architecture Frameworks Knowledge --- # 第 3 節:Solution Architecture Fundamentals ## Introduction to this section ### 課程階段提醒與學習方向 * 即將進入解決方案架構的核心基礎教學 * 理論階段雖然較重,但對理解與實作完整架構非常關鍵 * 目標是能依據業務需求,產出可交付的詳細解決方案架構 ### 講師持續投入與課程內容更新 * 課程內容將持續擴充,依據學生問題與反饋新增實務內容 * 講師過去在 Udemy 上已有相關教學經驗,並承諾投入更多細節 ### 關於課程評價 * 鼓勵學員給予正面評價,作為講師持續產出內容的動力 * 提到對課程有高度投入與期待,期望建立高品質學習資源 ## Architecture Organization, Deliverables, Stakeholders and Domains ### 解決方案架構學習方向 * 理解理論是進行實務設計的必要前提 * 本課程將透過實際案例進行解決方案架構練習 * 架構設計需根據業務需求,逐步建立完整解決方案 ### 架構團隊組織結構 * Chief Architect 負責領導整體架構策略 * Domain Architect 專注於特定業務領域(如銷售、財務、營運) * Solution Architect 設計符合業務需求的整體技術解決方案 * Application Architect 聚焦於應用系統設計 * Cloud Architect 專責雲端平台解決方案 * Security Architect 專注於資安設計與控制 * Infrastructure Architect 處理系統部署與基礎架構 ### 解決方案架構師的主要產出 * 初步架構設計(Conceptual Architecture)用於評估多個解決選項 * Agile 團隊常於 Sprint 0 階段建立初步架構藍圖 * 傳統瀑布模式中會建立完整詳細的架構文件 * 在敏捷開發中,需隨著需求演進逐步補足架構細節 * 持續建立與優化解決方案架構的最佳實務與標準 ### 解決方案架構師合作對象 * Chief Architect 與 Domain Architects * 業務使用者與業務利害關係人 * Business Analyst * 專案經理或 Scrum Master * 開發主管、技術領導與開發人員 * 維運團隊與 DevOps * Security、Infrastructure、Cloud 等技術架構師 ### 企業架構的四大領域 * Business Architecture:涵蓋業務功能、流程、組織架構與地理據點 * Data Architecture:處理主資料、交易資料與其在業務與應用中的應用 * Application Architecture:描述系統邏輯結構與業務流程自動化實作方式 * Technology Architecture:涵蓋伺服器、網路、作業系統、資料庫與整合中介軟體 ### 解決方案架構的影響範圍 * 每次設計解決方案時,均會觸及所有企業架構領域 * 所有變更需更新企業架構知識庫與標準文件 ## Solution Architecture Process ### 解決方案架構流程概述 * 說明解決方案架構師在不同開發流程中的角色與互動 * 涵蓋瀑布式與敏捷式的解決方案架構流程 * 實作將以實際案例貫穿整門課程 ### 瀑布式解決方案架構流程 * 從業務案例或問題陳述出發,識別並分析高階業務需求 * 架構遠景(Architecture Vision)提供可能的解決方案選項 * 根據 TOGAF,遠景包括約束、假設、高階非功能需求、概念架構圖、粗略估算 * 通常在確認完整業務需求後,再完成詳細架構文件 ### 敏捷式解決方案架構流程 * 架構設計與開發流程同步進行 * Sprint 0 階段產出初步架構藍圖以供團隊參考 * 架構需能隨需求變動而演進,符合敏捷交付精神 * SAFE(Scaled Agile Framework)與 TOGAF 的敏捷擴充版本支援持續演進設計 ### 架構視角與交付物 * 解決方案架構需包含多個視角:業務、資料、應用、技術、部署與營運 * 解決方案架構審查由架構審查委員會與利害關係人共同參與 * 審查確保設計方案合理並納入各方意見 ### 可交付成果與工件說明 * 架構遠景文件:描述問題、涉眾關注、解決方案選項、高階估算與需求 * 概念架構與願景可合併為單一文件呈現 * 邏輯架構:說明使用者影響、組織變動、系統與資料流 * 實體架構:描述部署方式、技術堆疊、安全與硬體需求等 * 以上內容統整於完整的解決方案架構文件中 ### Scrum 模型中的架構實踐 * 架構師參與產品待辦清單規劃與 Sprint 會議 * Sprint 期間產出初步架構(例如 Sprint Zero 文件) * 架構師負責與團隊合作設計可交付之解決方案 * 每次迭代結束需提供可被業務展示與驗證的成果 ### 敏捷交付下的圖表與模型需求 * 所需視圖包含:業務視圖、應用視圖、資料視圖、整合架構與基礎架構圖 * 所有圖表與文件須具備敏捷特性,支持快速溝通與調整 * 架構師需能快速建立並更新這些工件,以支援持續交付與團隊運作 ### 架構實作與後續驗證 * 解決方案部署後仍需由架構師參與運行期檢視(如保固期) * 驗證架構落地狀況、與實際營運結果一致性 * 根據實際回饋進行調整與最佳化 ## IT Enterprise Process ### 企業層級的 IT 流程概述 * 架構設計需先理解企業整體運作流程 * 所述流程為通用性整理,實際情況視各公司而異 ### 商業策略與目標 * 商業策略定義企業的核心目標與願景 * 常見目標包含產品銷售、營收提升、客戶服務優化、永續發展等 * 策略引導組織的營運方向與價值主張 ### 營運模式(Operating Model) * 抽象描述組織如何交付價值給客戶 * 涉及人員、流程、據點與技術資源的整合 * 描述企業內部運作與技術支撐的關係 ### 企業架構(Enterprise Architecture)角色 * 奠基於原則與最佳實務,導引組織進行變革 * 涵蓋商業、資料、流程、系統與技術層面的調整 * 支援策略執行與目標達成 ### 需求定義階段 * 識別並優化業務流程與產品需求 * 定義業務使用情境與改進重點 * 為後續解決方案架構建立明確基礎 ### 解決方案架構(Solution Architecture) * 建構滿足業務需求的技術方案與選項 * 為專案執行提供起點,也影響企業架構藍圖 * 即使採用 Agile 方法,仍需有概念性架構作為初期導引 ### 解決方案交付(Solution Delivery) * 涵蓋系統開發生命週期(SDLC):需求細化、系統設計、開發測試與交付 * 架構師需參與各階段以確保設計與實作一致 ### 系統管理與營運(Operations) * 確保系統穩定運行並提供所需基礎設施 * 包含監控、問題管理、維護非功能性需求(如可用性、安全性等) ## 測驗:Knowledge on Solution Architecture Fundamentals # 第 4 節:Sprint Zero Architecture or IT Architecture Vision ## Theory of an IT Architecture Vision or Sprint Zero Architecture Document ### 架構願景文件(Architecture Vision Document)的目的 * 提供業務足夠資訊以評估解決方案選項 * 協助決定是否修改現有系統、購買新系統、內部開發或外包實作 * 評估專案的投資報酬率與風險,作為是否啟動的依據 ### 核心內容簡介 * 架構願景文件或 Sprint 0 文件的內容可因組織而異 * 本課程內容參考 TOGAF 框架與實務經驗整合 ### 問題陳述(Problem Statement) * 說明業務面臨的問題或新需求 * 由業務人員撰寫,針對需要解決的核心議題 * 包含受影響的業務與 IT 利害關係人、能力、價值鏈 ### 商業願景(Business Vision Statement) * 明確定義架構預期達成的目標與成果 * 協助架構師聚焦於關鍵問題並驗證可行性 ### 變革驅動因素與機會(Change Drivers and Opportunities) * 說明推動此解決方案的業務驅動力 * 同時列出實施目標架構的潛在機會 * 描述受影響的業務能力(如新增或修改能力) ### 業務與技術目標(Business and Technology Objectives) * 業務目標:解決特定問題的業務成效 * 技術目標:如系統遷移、替換、退役等,通常屬於應用藍圖一部分 ### 架構願景細節(Architecture Vision Details) * 列出架構原則、假設條件與限制因素 * 包含 As-Is 概念架構(現況)與 To-Be 概念架構(目標狀態) * 展現解決方案組成、應用、資料、安全與基礎架構需求 ### 非功能需求(Non-Functional Requirements) * 定義設計限制與營運需求 * 涵蓋效能、可用性、資料量、互動方式、持續營運、安全、監控、網路、UI 等 * 對整體系統穩定性與維運有關鍵影響 ### 解決方案選項(Solution Options) * 提出建置、自行開發、購買或重用既有系統的方案 * 列出各方案的技術組合與部署模式 * 可視情況納入特定廠商選項 ### 架構準則與標準(Architecture Guidelines and Standards) * 展示架構設計遵循的組織標準與實作規範 * 確保系統與既有平台一致性與整合性 ### 初步估算與預算參考(Rough Estimates and Costing) * 與開發團隊合作估算初步開發時程與資源成本 * 協助業務評估可行性並規劃 IT 預算 * 涵蓋技術成本、授權費用與預估時程等 ### 補充說明 * 架構願景可整合為一份文件,亦可拆分為願景與概念架構兩份 * 下一堂課將介紹此文件的實際範本與結構 ## The Template for IT Architecture Vision or Sprint Zero Architecture ### 文件用途與來源 * 文件為「Architecture Vision」或「Sprint Zero Architecture」模板 * 範本為 Google Docs 形式,可根據實際情況自行修改 * 課程資源中提供下載連結 ### 文件目的 * 協助業務理解可行的解決方案選項 * 提供高階資訊、需求與初步預算評估 * 支援專案啟動前的可行性與方向判斷 ### 問題描述區塊內容 * 問題陳述:描述業務當前面臨的問題或新需求 * 願景陳述:說明希望透過架構達成的結果與效益 * 能力影響:分析哪些業務能力受影響,是否為新增或變更 * 變革驅動與機會:說明推動此方案的原因與預期收穫 * 業務目標:列出解決方案所需達成的業務成果 ### 架構願景區塊內容 * 假設條件:列出基於當前理解所做出的技術與業務假設 * 限制因素:包含預算、人力、時間、技術等限制 * 現況概念架構(As-Is):目前系統或流程的整體結構 * 目標概念架構(To-Be):未來預期實現的架構設計 ### 非功能性需求說明 * 系統可用性、效能、資料量預估 * 使用者互動方式與通道 * 備份頻率與災難復原計畫 * 資安需求與存取控管 * 營運與監控流程 * 網路環境與使用者介面需求 * 架構層級的額外設計需求 ### 解決方案選項與技術架構 * 提出數個高階實作選項(自建、採購、外包等) * 技術平台、部署模式、服務模式的初步評估 ### 預算與時間評估 * 提供粗略開發成本與時程 * 包含授權、平台、部署與營運的初步費用估算 ### 模板結構說明 * 範本結構已包含上述各區塊 * 接下來課程將以實際案例逐一填寫各段內容 ## 測驗:Knowledge on IT Architecture Vision or Sprint Zero Architecture ## Introducing the Solution Sections # 第 5 節:Creating an IT Architecture Vision or Sprint Zero Architecture ## The Business Problem ### 課程內容概覽 * 本節課聚焦於從業務問題導出業務解決方案 * 核心關鍵為理解「需求」如何引導解決方案設計 ### 虛構公司案例:滑稽帽子店 * 建立一間虛構公司作為案例背景 * 將從需求開始,逐步建構「概念架構」 * 案例貫穿後續多個講座,涵蓋解決方案架構、圖表與內容撰寫 ### 文件與作業說明 * 提供一份以 Google Docs 編寫的業務需求文件 * 模擬由商業人士撰寫、部分包含技術需求 * 學員需在下堂課前完整閱讀並理解此文件 * 若未掌握需求內容,後續課程將難以跟上 ### 學習任務(家庭作業) * 閱讀與理解需求文件為本次作業 * 為下一節課的概念架構與解決方案設計做好準備 ## The Agile Team ### 課程虛擬團隊介紹目的 * 建立一個模擬團隊以對應真實專案環境 * 便於學習過程中理解各角色在解決方案架構流程中的職責與互動 * 適用於 Waterfall、Scrum、Kanban 等開發流程 ### 團隊成員角色概覽 * **Product Owner(產品負責人)**:來自業務端,擁有產品,負責需求定義與優先順序 * **Business Analyst(業務分析師)**:橋接業務與技術,負責需求分析與轉換 * **Solution Architect(解決方案架構師)**:設計整體技術解決方案,協調各技術面 * **Scrum Master / Project Manager(敏捷教練/專案經理)**:協調團隊、移除障礙、確保流程順暢 * **Lead Developer(開發領導)**:技術設計與實作主導,負責開發決策與技術方案實現 * **QA Lead(測試領導)**:負責測試策略與測試環境,確保品質控制 * **IT Operations(維運)**:管理部署與營運相關事務,確保系統穩定落地 ### 團隊成員對應名稱 * Sarah:產品負責人(Product Owner) * Anne:業務分析師(Business Analyst) * Bill:解決方案架構師(Solution Architect) * Jane:專案經理/Scrum Master * Jack:開發領導(Lead Developer) * Joe:測試負責人(QA Lead) * Kevin:IT 維運代表(Operations) ### 架構審查委員會(Architecture Review Board) * 包含企業架構師(Enterprise Architect)、領域架構師(Domain Architect) * 涉及 IT 管理者與資深架構師 * 負責審查並批准最終的解決方案架構 ### 團隊參考方式 * 在課程中會多次參考此團隊及其角色 * 各角色對應解決方案架構的不同階段與任務 ## Defining the Business Problem ### 商業問題背景 * 公司目前僅於實體店面販售帽子 * 現在希望開發一個電子商務平台,將帽子產品線上銷售 ### 主要商業需求 * 建立線上註冊與購物流程 * 使用者需註冊帳號才能加入商品至購物車並進行購買 * 僅允許購買有庫存的商品,系統需即時查詢庫存狀態 ### 使用者登入需求 * 支援安全登入流程 * 可整合 Google 與 Facebook 等社群帳號進行登入 ### 結帳與支付需求 * 結帳時需整合安全的第三方支付閘道 * 支援信用卡與 PayPal 支付方式 ### 訂單完成通知需求 * 訂單成功後需自動寄送確認電子郵件給客戶 * 同時需自動發送通知給倉儲經理以便備貨處理 ### 配送整合需求 * 需整合第三方物流商的 API * 訂單完成後自動發送取貨與配送請求給物流公司 ### 發票發送需求 * 當物流確認成功送達後,系統應自動寄送發票給客戶 * 發票透過電子郵件發送,作為交易完成的通知 ## Understand the Problem Statement ### 本講座重點與目的 * 專注於撰寫 IT Architecture Vision 文件中的「問題陳述」 * 說明誰提供資訊、哪些內容需納入、如何結構化表達 ### 問題陳述資料來源 * 由產品負責人提供業務問題、需求與期望成果 * 業務分析師負責紀錄與整理問題陳述內容 * 包含涉眾、受影響的業務能力與業務關切 ### 問題背景說明 * 滑稽帽子店因疫情導致實體銷售下降 * 決定建立電子商務平台銷售現有庫存的帽子 * 線上銷售系統需涵蓋註冊、購物、付款、出貨與通知功能 ### 涉眾與對應需求 * 網站:做為銷售平台,提供線上購物介面 * 客戶:註冊帳號、建立購物車、進行付款與接收通知 * 倉儲經理:接收訂單通知、查詢庫存並備貨 * 配送公司:接收出貨通知、配送完成後回報狀態並觸發發票寄送 ### 業務功能與關切事項 * 系統需驗證商品是否有庫存,避免缺貨後仍接受訂單 * 支援第三方登入(Google、Facebook)以簡化註冊流程 * 整合安全付款閘道(如 PayPal、信用卡)以處理交易 * 訂單完成後須自動寄送確認信與電子發票給客戶 * 配送完成後需通知後台並觸發後續流程 ### 問題陳述的內容重點 * 明確列出涉眾角色與其功能需求 * 描述系統需支援的業務流程與整合點 * 突出目前痛點與轉型目標(如線上銷售、自動化通知等) ## Business Vision Statement ### 商業願景聲明內容來源 * 由產品負責人或業務利害關係人提供 * 由業務分析師負責記錄並整理進文件中 * 描述公司目標與解決方案需實現的商業價值 ### 滑稽帽子店的商業願景 * 希望將實體門市銷售的商品擴展至線上平台 * 建立一個具成本效益的電子商務網站來販售現有庫存帽子 ### 變革驅動因素與機會 * 提升銷售量,透過線上銷售管道觸及更多顧客 * 建立支援手機、平板與桌機的快速且易用的網站介面 * 已與外部物流公司簽約,需整合其 API 以完成出貨與追蹤流程 * 網站需與既有的倉儲庫存系統整合,以即時查詢庫存狀況 * 限定網站僅供美國、歐洲與南非地區用戶存取 * 系統需提供 24/7 可用性,支援多時區顧客操作需求 * 網站開發須使用最新的 Agile 方法論以因應快速交付與彈性變更 * 客戶資料需保密並具備完善資安措施,以保護個資隱私 ### 文件結構提示 * 願景陳述部分為高階方向與價值說明 * 變革驅動與機會列出具體執行要點與對解決方案的影響 * 為後續非功能需求、技術架構設計奠定商業基礎 ## Business Objectives and Capability Impact ### 本講座重點 * 說明如何在架構願景文件中建立「業務能力影響模型」 * 初次由解決方案架構師參與該模型的製作 * 業務能力與目標通常由業務用戶、產品負責人或業務分析師提供 ### 能力模型結構與呈現方式 * 每個企業都有專屬的業務能力模型,依規模與需求而異 * 可依領域(如銷售、產品、庫存、交付、支援)分類顯示能力 * 使用顏色區分「現有能力」與「新增/變更能力」 ### 新增與變更的業務能力 * **電子商務銷售能力**:新增能力,用於線上銷售產品 * **客戶帳戶管理**:新增能力,儲存使用者資訊與交易歷史 * **客戶洞察報表**:新增能力,用於後續行銷與分析應用 * **訂單管理變更**:因引入線上訂單流程需調整現有訂單處理機制 * **產品管理延伸**:需儲存產品圖像,支援前台網站展示 * **庫存查詢整合**:需從現有庫存系統取得庫存資料供電商系統即時查詢 * **交付服務整合**:新增對外 API 整合,用於自動派送與追蹤交付狀態 * **發票與溝通機制**:新增自動化電子郵件發送能力(確認信、發票通知等) * **IT 支援能力提升**:新增系統上線後需擴充 IT 支援範圍與能力 ### 能力影響呈現重點 * 明確標示哪些能力是「全新」導入,哪些是「現有功能的擴充或調整」 * 能力模型有助於視覺化業務影響,便於後續解決方案設計與溝通 * 支援後續架構文件中「非功能需求」、「整合點」與「系統邊界」定義 ## Architecture Vision ### 架構願景與原則的目的 * 定義此解決方案應遵循的高層架構原則 * 原則由架構審查委員會(Architecture Review Board)事先建立 * 解決方案架構師負責選擇與本案相關的原則並納入設計 ### 架構原則的來源與確認方式 * 初期由企業架構師或資深架構師制定 * 架構師可與同儕或企業架構師討論確認適用原則 * 原則內容通常已紀錄於企業架構資源中 ### 本次案例選用的架構原則 * **業務持續性**:系統需納入災難復原(Disaster Recovery)機制 * **易用性**:技術選擇應簡單易用、易於導入與維運 * **資料安全性**:資料在傳輸與儲存時必須加密,確保安全 * **技術獨立性**:系統應能在不同基礎設施上運行,避免平台綁定(如可部署於 Azure 或 AWS) ### 架構原則的應用價值 * 為系統設計提供一致性與方向 * 確保未來可擴充、易維運與具彈性 * 支援企業長期技術策略與標準化政策 ## Architecture Assumptions ### 架構假設的定義與收集方式 * 架構假設需由整個團隊共同參與會議討論產出 * 會議參與者包含產品負責人、專案經理、開發人員、測試人員、IT 維運與其他架構師 * 解決方案架構師負責彙整並納入架構願景文件中 ### 常見架構假設範例 * 現有庫存系統已部署並提供 API,可供查詢與更新庫存數據 * 第三方物流廠商已提供 API,可用於出貨與配送狀態查詢 * 系統已有電子郵件發送能力,或將假設其具備該功能 * 這些假設可由技術團隊或業務代表提出,後續需進行驗證 ### 架構限制條件 * 業務規定網站僅限美國、歐洲與南非地區可存取 * IT 環境目前僅具備 Azure 雲端平台帳號,無其他雲平台支援 * 限制需在設計階段被明確考量,影響地理部署與合規性 ### 識別風險與緩解策略 * 風險:人力不足導致專案無法如期交付 * 緩解方式:業務提供預算聘請外包工程師加速進度 * 風險:雲端運營成本過高 * 緩解方式:架構設計中納入自動擴展(Auto-scaling)以降低成本壓力 * 所有風險需指定責任人並定義應對計畫 ### 文件目的與價值 * 明確記錄假設、限制與風險,有助於後續設計與專案決策 * 可作為評估方案可行性與溝通依據,避免後期誤差與衝突 ## Constraints and Risks ### 架構現況與目標概念架構說明 * 若現有系統存在,需繪製 As-Is 概念架構圖 * 本案例為全新電子商務系統,無現有架構可參考 * 直接建立 To-Be 概念架構作為未來系統設計藍圖 ### 情境圖(Context Diagram)介紹 * 表示系統與外部使用者及外部系統的互動 * 圖中中央為主要系統:Funny Hat Online Website * 以高階方式呈現資料流與整合點,不涉及內部邏輯細節 ### 使用者與外部系統互動關係 * 客戶可在線上購買商品,並接收訂單與發票通知 * 系統整合社群登入服務(Google、Facebook)進行身份驗證 * 結帳時導向支付閘道(如 PayPal、信用卡)進行付款 * 系統產生訂單後通知倉儲,並將資訊傳送至發票系統產生發票 ### 整合系統與資料流說明 * 與庫存管理系統互動:查詢與更新庫存、取得商品資訊與圖片 * 與物流廠商 API 整合:發送出貨請求與接收配送狀態 * 與發票系統整合:依據出貨完成狀態產出發票並寄送給客戶 ### 圖表輔以文字說明 * 圖示提供整體架構與資料流視覺化概覽 * 應補充文字描述各互動與邏輯,以利非技術涉眾理解 * 此階段為高階概念設計,詳細技術設計將於後續架構文件中補充 ## Context Diagrams ### 本講座重點與目的 * 介紹使用 C4 模型作為替代方案來建構系統架構圖 * 與傳統情境圖(Context Diagram)比較,提供更清晰的分層架構資訊 * 展示 C4「System Context Diagram」在本案例中的應用 ### C4 模型簡介與優點 * C4 模型將系統視圖分為四層(Context、Container、Component、Code) * System Context Diagram 屬於最外層,顯示系統與外部角色/系統的互動關係 * 圖面更具層次與結構,適合系統概觀展示與進一步細化 ### C4 模型中主要元素說明 * **客戶(Customer)**:Funny Hat 網站的終端使用者 * **Funny Hat Website**:主要 Web 應用,供使用者瀏覽商品、建立購物車與進行付款 * **Payment Gateway**:處理支付流程,支援信用卡與 PayPal,透過導向方式整合 * **API Layer**:中介層,負責網站與後端系統的資料交換與整合呼叫 * **Delivery Vendor API**:第三方物流廠商的 API,處理出貨請求與配送狀態 * **Stock System**:管理商品庫存、訂單與產品資料 * **Invoicing System**:根據訂單生成並發送發票 * **Email Service**:寄送訂單與發票通知至客戶 ### 視覺標示與分層說明 * 藍色:新開發功能(如 API Layer) * 灰色:既有系統(如 Stock System) * 橘色或其他色:外部整合系統(如 Payment Gateway、Delivery Vendor) * 各元素間以箭頭標示資料流與互動方向 ### C4 模型的實務應用價值 * 比 Context Diagram 提供更多內部架構的線索,適合技術團隊閱讀 * 可延伸至更細緻的層級(如 Container Diagram)以支援後續架構細節發展 * 適用於需要展示內外部系統互動與模組分工的專案場景 ### 建議使用時機 * 若需求較複雜且有明確模組與服務邊界,建議使用 C4 模型 * 若受眾以非技術決策者為主,可優先使用 Context Diagram * 可依組織習慣與讀者需求選擇適合的圖示方式 ## How to model a Context Diagram using C4 ### 本講座重點 * 示範如何使用 Draw.io 建立 C4 模型圖 * 展示操作流程與基本建構方式 * 提供繪製解決方案架構圖的實用技巧 ### 工具使用:Draw.io(現稱 diagrams.net) * 透過瀏覽器進入 draw.io 網站 * 建立新圖表並選擇儲存位置(如 OneDrive) * 支援多種模板:基本圖形、商業圖表、雲端架構(Azure、AWS)、UML、流程圖、線框稿等 ### 啟用 C4 模型圖形庫 * 點選左側「More Shapes」以啟用 C4 圖形庫 * 勾選「C4」後套用,即可在側欄看到各類 C4 元件 * 包含使用者、系統、容器、元件等標準圖形 ### 建立 C4 元件流程 * 拖曳「Person」元件作為使用者角色,例如設定為「Customer」 * 拖曳「Software System」元件代表系統,如「Funny Hat Website」 * 可自訂名稱、描述與屬性,便於後續說明與閱讀 * 使用「Relationship」元件建立元件間關係,較一般箭頭更標準 ### 圖表互動與編輯技巧 * 點擊箭頭可輸入交互描述,如「purchases hats」 * 每個元件皆可加入技術細節與附加屬性 * 可自由拖曳與連接,快速建立概念架構圖 ### 實務應用建議 * 適用於架構師製作 System Context、Container、Component 圖層 * 可作為解決方案架構文件的附圖或簡報使用 * 圖表清晰、易於分享與修改,適合團隊協作使用 ## Review Conceptual Architecture and non-functional requirements ### 架構審查與同儕審核 * 解決方案架構師需安排與同儕或企業架構師進行架構審查會議 * 會議目的是確認概念架構內容與變更建議是否合理 * 收集審查回饋並納入更新,作為後續架構工作的基礎 ### 高階非功能性需求會議準備 * 由解決方案架構師主導召開會議,參與者包含業務代表與團隊成員 * 若企業已有既定非功能性需求,可直接使用;否則需與商業分析師共同定義 * 所有需求目前皆屬於概念性階段,並非最終版本 ### 可用性(Availability) * 系統需全年無休(24/7)運行,達到 99.99% 可用性 * 支援例行批次任務,如查詢物流狀態 * 計劃性維護時間設為週一凌晨 ### 效能(Performance) * 系統應具備自動擴展能力,特別是在晚間與週末流量高峰期 * 回應時間需低於 2 秒 * 每日預估約 1,000 次請求 ### 資料量與儲存(Volumes) * 商品圖片儲存於 AWS S3(或 Azure Blob) * 平均圖片大小為 50KB,共約 200 種產品 * 初始儲存空間需達 100GB,年增長預估為 10% ### 使用者互動(User Interactions) * 前三個月預期 500 位使用者,一年內成長至 2,000 位 * 最少同時支援 10 位使用者在線 * 地理限制為美國、歐洲與南非 ### 業務連續性(Business Continuity) * 實作資料備份與資料庫複寫機制 * 使用多可用區部署(Multi-AZ)以確保高可用性 * 客戶資料需留在所在區域資料中心,遵守資料主權 ### 資安要求(Security) * 使用 OAuth 與 Google/Facebook 提供登入驗證 * 資料在儲存與傳輸時均需加密 * 實作存取稽核機制,記錄資料存取與異動行為 * 網站需使用 X.509 憑證以確保 HTTPS 傳輸安全 ### 運維與監控(Operations & Monitoring) * 實作健康檢查機制,監控 Web 應用與資料庫狀態 * 系統錯誤需主動通知 IT 支援人員 * 建立例外處理與錯誤通報流程 ### 網路規劃(Networking) * 建立 AWS VPC 架構,前端服務放置於公共子網,後端服務放置於私有子網 * 實作 Load Balancer 以處理進入流量並支援自動擴展 * 設定防火牆規則,控制對外 API 的流量進出 ### 使用者介面需求(UI Requirements) * 網站需具備響應式設計,支援行動裝置與桌面瀏覽器 ### 架構規劃(Architecture Requirements) * 決定部署於 AWS 雲端,分為 Dev、QA、UAT 與 Production 環境 * 使用微服務架構與容器化部署方案 * 導入 DevOps 管線,支援 CI/CD 流程與自動部署 ## Propose Solution Options ### 解決方案選項制定流程 * 解決方案架構師與 IT 團隊領導與資深開發人員合作,制定可行方案 * 須依據企業既定的雲端策略(如 AWS 或 Azure)與設計準則做出選擇 * 完成初步選項後,需提交給 Architecture Review Board 或相關架構師進行審查 * 所有回饋須整合回 IT Architecture Vision 文件中 ### 選定的基礎解決方案架構 * Web 應用程式部署於 AWS EC2 上,透過 Apache 提供服務 * 應用邏輯層與前端 Web 層分開部署,各自為獨立的 EC2 實例 * 使用 ALB(Application Load Balancer)管理來自外部的請求 * 透過 Auto Scaling Group 根據流量自動擴展 EC2 實例 ### 資料與快取處理 * 使用 Elasticache 快取靜態產品資料,提升查詢效率 * 圖片儲存於 AWS S3,供網站展示使用 * 使用 RDS MySQL 作為主要關聯式資料庫(亦可根據需求替換為其他支援的 DB) * 公司網域透過 Route 53 託管 ### 監控與通知機制 * 使用 CloudWatch 進行應用程式與基礎設施的健康檢查與錯誤告警 * 應用程式異常處理可整合至 CloudWatch 日誌與警示機制 * 使用 AWS SES 發送交易郵件與系統通知給用戶 ### 全球內容分發與 API 整合 * 使用 CloudFront 內容傳遞網路(CDN)讓網站於美國、歐洲與南非快速載入 * 整合 Amazon API Gateway 與第三方物流廠商之 API,完成訂單交付與查詢作業 ### 設計原則考量與技術選擇說明 * 所採用技術為簡化版本,目的是說明設計思路與架構原則 * 所有元件與服務均可依實際需求替換為相同屬性的替代方案 * 非以最佳效能為唯一考量,強調初期可理解、可實作的基本架構模型 ### 後續階段預告 * 下一講將進行成本初估,供業務方評估是否進入實作階段 * 若獲得業務批准,將開始建構完整的 End-to-End 解決方案架構 ## Cost Estimates ### 成本估算流程概述 * 成本估算屬於 IT 架構願景文件的最後階段 * 由解決方案架構師召集相關團隊進行協作估算 * 可使用 T-shirt Sizing 估算模型快速評估工作量 * 不同公司可有各自的估算模板與流程 ### T-shirt Sizing 評估標準 * Small:約需 1~2 週完成 * Medium:約需 2~4 週完成 * Large:約需 4~8 週完成 * X-Large:約需 8~16 週完成 ### 各功能模組與估算結果 * Web 應用功能(商品展示、加入購物車、結帳):X-Large(約 10 週) * 資料庫設計與實作(用戶資料、訂單、購物車):Medium(約 2 週) * 郵件通知整合(Amazon SES 發送訂單與發票):Medium(約 2 週) * 訂單系統串接(與庫存系統 API 整合):Small(約 1 週) * 發票系統串接(生成與寄送發票):Small(約 1 週) * 外部物流 API 串接(請求取貨與查詢配送狀態):Large(約 4 週) * 使用者登入整合(OAuth、Google/Facebook):Small(約 1 週) * 基礎設施建置(VPC、子網、監控):Medium(約 3 週) * 金流整合(付款閘道串接與重導):Medium(約 2 週) ### 總工時與成本推估 * 預估總開發工期約 24 週 * 預估總工時為 960 小時 * 參與角色包含 2 位開發者、商業分析師、解決方案架構師、測試人員與 Scrum Master * 粗略估算人力成本為約 127,000 美元 ### 額外成本與基礎設施支出 * 外部供應商整合與授權成本:約 1,500 美元 * AWS 基礎設施年度費用:約 50,000 美元 * 年度雲端營運費用須明確向業務單位說明 ### 注意事項與後續發展 * 此估算為初步規劃階段的粗估 * 待完整方案架構完成後,將進行更細緻的技術與成本細化 * 若採用 Agile,可將估算轉換為 Epic,分解至 Product Backlog 與 Sprint 計劃 ## The ARB or Architecture Review Board ### 架構願景結案審查流程 * 解決方案架構師需召開架構願景結案審查會議 * 會議參與者包含企業架構師、其他解決方案架構師、IT 經理、IT 支援人員及 Scrum 團隊成員 * 目的為呈現完整的 IT 架構願景內容並收集意見與建議 * 審查會後須獲得最終批准,才能進入下一階段 ### 後續流程 * 若業務單位批准架構選項,則可展開具體的解決方案架構設計 * 若公司無既定流程,可參考本課程的標準化步驟作為實施參考 * 下一階段將著重於完整撰寫《Solution Architecture Document》之技術細節與內容規劃 --- # 第 6 節:Creating the Solution Architecture ## Solution Architecture Template ### 解決方案架構文件簡介 * 開始撰寫《Solution Architecture Document》作為架構階段下一步 * 文件可用簡報工具(如 Google Slides、PowerPoint)撰寫,便於簡報與審查 * 文件格式可依公司慣例選擇,不拘泥於特定樣式 ### 文件目標與時機 * 可在專案正式啟動前先撰寫部分內容,幫助專案團隊準備 * 若採用 Agile 方法,也可在開發過程中持續補充與完善 ### 文件主要內容總覽 * 專案描述與範疇(In Scope / Out of Scope) * 商業能力地圖(Business Capability Map) * 應用變更與影響系統清單 * 應用程式開發路線圖 ### 架構圖與流程圖 * 現況(As-Is)與目標(To-Be)Context Diagram(含變動部分) * 用例圖(Use Case View),可能包含業務流程 Level 0/1/2 * 來自商業分析師或業務架構師的輸入 ### 非功能性需求詳列(High-level to Detail) * 可用性(Availability)與效能(Performance) * 資料量估算、檔案大小、介面形式 * 備份與歷史資料保存策略 * 資料庫成長預估與存儲需求 ### 使用者互動與角色 * 使用者地理分布與數量預估 * 各類角色與使用情境 ### 業務連續性與安全需求 * 備援架構、多區可用性設計 * 各國資料儲存隔離需求 * 認證與授權(OAuth、角色權限) * 資料保密、完整性與稽核紀錄機制 ### 運維與網路需求 * 健康檢查、監控與告警機制 * 支援責任分工(運維、開發、IT 支援) * 網路配置(VPC、子網、防火牆規則) ### 使用者介面與技術環境 * 回應式設計,適用於行動裝置與桌面 * 系統部署環境(如 EC2)、開發堆疊技術 ### 系統架構圖與整合需求 * 目標架構圖(Target State Architecture) * 架構目標、限制與風險 * 整合架構(外部 API、郵件系統、內部服務) * 資料架構(主資料、交易資料、資料流程) ### 部署與實作細節 * 邏輯與實體部署模型 * 安全架構與網路架構 * 開發需求、資料庫與檔案儲存設定 * 資料遷移策略(如需) * 部署策略(手動/自動、CI/CD) * 報表與額外功能開發需求 ### 後續安排 * 接下來課程會逐項深入說明如何完成上述內容 * 每部分將介紹參與角色、需求來源與產出格式 ## The Project Description ### 專案描述來源與撰寫角色 * 專案描述由業務單位提供指引 * 專案經理或 Scrum Master 根據業務需求撰寫描述 * 為解決方案架構文件的第一部分 ### Funny Hat Shop 專案目標 * 開發一個電子商務網站,用於銷售 Funny Hat Shop 的產品 * 建立符合 IT 架構願景與業務需求的解決方案架構 ### 預期業務成果 * 透過網站增加產品銷售額 * 提供簡單、快速、易用的網站體驗 * 支援跨平台(手機、平板、電腦)瀏覽與操作 ### 整合需求 * 與外部物流供應商建立 API 整合 * 支援訂單配送流程的自動化與資訊交換 ## Business Capability Impact ### 專案範疇(In Scope) * 建置一個電子商務網站並部署於 AWS 平台 * 整合庫存管理系統與發票系統 * 實作 Email 通知服務,用於訂單與發票通知 * 與新的物流供應商整合,處理商品配送 * 整合物流供應商 API,自動化配送狀態與請求處理 * 為每項商品加入產品圖片並更新至庫存系統 ### 專案不在範疇內(Out of Scope) * 不包含現有庫存管理系統的升級或變更 ### 業務能力影響(Business Capability Impact) * 新增線上銷售能力(Online Sales) * 建立顧客帳戶與登入機制(Customer Account) * 增加顧客洞察與報表能力(Customer Insights/Reporting) * 新增物流配送服務整合(Delivery Service) * 調整訂單管理流程(Order Management) * 調整產品管理功能以支援產品圖片(Product Management) * 實作顧客電子郵件溝通能力(Customer Communication via Email) * 擴充支援服務能力,因應新應用系統(Support) * 調整發票處理流程,納入新銷售流程(Invoicing under Financial Services) ## Applications Impacted ### 應用系統路線圖(Application Roadmap) * 每個業務能力對應到的應用系統會標示是新建、重用或購買 * 僅列出本次專案會受到影響或新增的應用系統 ### 新增應用系統 * 電子商務網站(E-commerce Web Application):建置全新應用系統,對應於線上銷售能力 * 顧客帳戶系統(CRM Database):建置內部 CRM 系統,管理顧客帳戶資訊 * 客戶洞察報表系統(BI Reporting Capability):建立新的報表與洞察系統 * 配送服務整合(Delivery Vendor Integration):與外部供應商建立 API 整合,此應用需購買授權 * 郵件服務(Email Service on AWS):開發一套整合 AWS SaaS Email 的郵件發送服務 * IT 支援與監控(CloudWatch Monitoring):新建支援服務,利用 AWS CloudWatch 監控系統健康狀態 ### 既有系統變更與重用 * 訂單管理與產品管理(Stock Management System):重用現有系統,並進行修改以支援訂單處理與產品圖片管理 * 發票系統(Invoicing System):重用並更新原有發票系統,使其整合至網站流程中 ### 無系統移除或淘汰 * 本次專案未規劃淘汰任何現有應用系統 ## Conceptual Architecture ### Aziz 與 To-Be 概念性架構的定義與用途 * Aziz 描述現有架構與基礎設施的實作現況 * To-Be 根據本次專案需求描述未來預期架構 * 若本案無現有架構可參照,則 Aziz 可留空 * To-Be 用來描繪新增或變動的系統功能與整合方式 ### To-Be 架構補充說明 * To-Be 可能包含新的使用者互動方式(如:透過網站與系統互動) * API 層、付款閘道、Email 服務、外部配送 API 等為新加入元件 * Aziz 中若沒有此類元件,代表此為新增功能 ### 圖表建立與工具說明 * 可使用 Draw\.io 等工具繪製 Context Diagram * 在 Solution Architecture 文件中補上與 Architecture Vision 差異的內容 * 不需重繪已無變動的部分,只需反映變動 ### 圖表審查流程 * 更新完 To-Be 架構圖後,應安排與架構同儕或架構審查會的會議 * 確認每一個系統、Actor、整合點與互動關係是否被完整捕捉 * 確保高階(Contextual)層級的整合方向清楚明確 ### 實務建議 * 即使架構圖處於高階抽象層,仍須明確標示所有內外部系統的交互作用 * 所有新增功能與變更項目應反映在 To-Be 架構圖中,以利後續細部設計與審查 ## Business Requirement Reviews ### 商業需求檢視流程概述 * 商業需求來源通常為產品負責人與業務使用者 * 專案經理或 Scrum Master 協助記錄並納入文件 * 不同開發模式(瀑布與敏捷)處理需求的方式不同 * 在解決方案架構制定階段,需掌握高階需求內容 ### 瀑布式 vs 敏捷式需求處理 * 瀑布式會先完成詳細的需求文件,由業務分析師主持 * 敏捷則以高階 user stories 為起點,逐步於每個 sprint 內細化與實作 * 解決方案架構師需依專案方式決定何時深入參與需求設計 ### 解決方案架構師的角色與參與時機 * 多數大型企業中,架構設計會在開發啟動前先確定技術堆疊與流程方向 * 架構師需參與需求檢視會議,與業務、產品負責人、開發團隊共同澄清需求 * 架構師須確認需求是否會影響架構設計與整合決策 ### 高階需求案例展示(Funny Hat 商店) * 使用者需可建立帳號並登入系統(OAuth / Google / Facebook) * 客戶能搜尋、瀏覽商品並加入購物車 * 預期支援不同數量的商品與數量選擇邏輯 * 若採敏捷模式,則可按優先順序安排部分功能進入初期開發 ### 與業務分析師、UX 團隊的協作 * UX 設計師會提供 UI 原型(wireframes)供團隊理解畫面流與互動 * 業務分析師會進一步定義細節,如稅務計算、欄位邏輯等業務規則 * 此類細節會在後續的系統設計與實作階段處理,不納入高階架構範疇 ### 其他可能涉及但不屬於架構師的產出 * BPMN 或其他業務流程模型可能作為需求佐證 * 架構師應了解流程對技術整合的影響,但不需親自產出流程圖 * 細部流程與畫面設計由業務分析師與 UX 專責負責完成 ## Non-Functional Requirements ### 非功能性需求責任與流程 * 高階非功能性需求初步由商業分析師與產品負責人、業務單位討論確定 * 詳細非功能性需求由解決方案架構師負責蒐集與整理 * 需召開多場會議與各方確認細節並納入解決方案架構審查文件 --- ### 可用性與維護需求 * 系統預期全年無休,目標可用性為 99.99% * SLA 需明確,例如訂單確認信於下單後 10 分鐘內送達 * 維護窗口需明確,例如每週日凌晨 1–2 點 * DevOps 環境下需評估 CI/CD 對運作影響 * 不可避免的非計劃性停機需評估對業務的影響(例如銷售) * 批次處理如每 10 分鐘執行一次用於更新配送狀態 --- ### 效能與擴展性需求 * 頁面回應時間應低於 2 秒 * 系統需支援每日數千次的訪問量 * 高峰期間須支援自動擴展,例如使用 AWS/Azure 的 Auto Scaling 和 Load Balancer * 需根據負載狀況自動增減服務實例 * 定義資料延遲接受範圍(例如地址變更是否需即時同步) --- ### 資料量與儲存 * 每月預期交易量約 500 筆,網站每日應支援 1000 次點擊 * 高峰期預計在週末與晚上 * 產品圖片儲存於 AWS S3,平均大小約 50KB * 資料庫需具備複寫與備援機制以應對異常 * 須考量歷史紀錄保存期限(如保留十年以上) * 預估資料庫每年成長 10% --- ### 使用者互動與角色 * 前三個月預計 500 名使用者,一年後達 2000 名 * 同時連線使用者數預估為 10 人,屬於低負載等級 * 使用者位置限制於美國、歐洲與南非 * 系統角色包含管理員、客戶、店鋪經理等角色,須明確定義權限 --- ### 業務持續性與災難復原 * 須具備業務持續性計畫,涵蓋災難發生時的應變策略 * 需確認是否有異地備份與跨平台部署能力 * 若 AWS 完全無法使用,應能轉移至 GCP 或 Azure * 架構設計中應利用多可用區(Multi-AZ)與 AWS CloudFront 發布至多個地區(美東、歐洲、南非) --- ### 安全性與驗證 * 使用 AWS Cognito 管理使用者驗證 * 支援 Google 與 Facebook 的單一登入(SSO) * 權限控管依據使用者角色(例如 admin、client、manager) * 支援審核機制(如主管審核使用者存取) * 實作稽核紀錄(例如地址變更記錄入稽核表) * 敏感資料需加密處理,遵循 GDPR 與各地法律 * 需實作 CAPTCHA 與多因素驗證(如 SMS)以驗證用戶真實性 --- ### 日誌與錯誤處理 * 系統異常需記錄於事件管理系統 * 開發人員需建立錯誤日誌,並保留七天以供追蹤 * 所有錯誤記錄應能支援維運與除錯使用 --- ### 傳輸與儲存加密 * 資料傳輸使用 X.509 憑證加密 * 與網站互動的 API 層需具備憑證驗證機制 * 使用 AWS KMS 管理秘密與加密(例如保護 S3 Bucket) * 資料庫使用 AES-256 加密演算法(例如 RDS)確保資料安全 ### 營運與監控需求 * 系統需支援即時健康檢查機制 * 使用 AWS CloudWatch 進行系統監控 * 整合 SNS 發送警示訊息(如簡訊或電子郵件)給維運人員 * IT 營運需持續監控監控訊息與支援信箱 --- ### 網路需求 * 使用 AWS VPC 或 Azure VNet 架構,區分 public 與 private subnet * Public subnet 用於網站主機,Private subnet 用於 API 與資料庫 * 預估資料頻寬:資料 5KB/s,上傳與下載,圖片 500KB/s * 設定防火牆與 Security Groups 控制內外部流量 * 使用 AWS API Gateway 存取外部供應商的 API * 對供應商 IP 白名單設定,並以密鑰進行驗證 * 使用 Application Load Balancer 處理網站流量並整合 Auto Scaling --- ### 使用者介面需求 * 網站需支援桌面與行動裝置(手機、平板) * 支援主流瀏覽器:Chrome、Firefox、Safari、Internet Explorer --- ### 架構需求 * 採用微服務架構,每個服務擁有自身資料與邏輯 * 使用容器化技術(如 Docker)部署服務 * API 採用 RESTful 架構與 JSON 格式 * 傳統 SOAP/XML 架構較不建議使用 --- ### 環境需求 * 需設置 4 個環境:開發(Dev)、測試(QA)、驗收(UAT)、正式(Prod) * 每個環境使用獨立 VPC,避免資源混淆與權限錯誤 * 注意 AWS 資源的區域性與共享性(如 S3 屬全球資源) --- ### 系統實作技術 * 開發語言採用 C# 搭配 ASP.NET Core 3.1 * 使用 MVC 架構開發 Web 應用 * 單元測試框架使用 XUnit * 網頁使用 Bootstrap 建立響應式設計 * 容器部署使用 Docker * 資料庫選擇可能包含 MySQL、SQL Server 或 PostgreSQL(部署於 AWS RDS) * Web Server 可使用 Apache 或 IIS * 前端可選擇 Angular 或 JavaScript 實作使用者介面 ## Solution Architecture Diagrams ### 架構圖與 TO-BE 架構概述 * 本次聚焦於「TO-BE」架構圖,未提供現有(AS-IS)架構 * 建立的架構圖基於 C4 模型,細化系統元件與互動流程 * 圖中內容協助設計與開發團隊理解整體系統設計方向與整合點 --- ### Web 應用與客戶端互動 * 採用 ASP.NET Core 單頁式應用(SPA),MVC 架構 * 功能涵蓋商品瀏覽、加入購物車與付款 * 資料透過 RESTful API(JSON)與後端交互 * 客戶端與後端通訊皆透過 HTTPS,搭配 X.509 憑證進行加密 --- ### 第三方支付整合 * 支援 Amazon Payment Gateway 進行支付流程 * 使用者付款時將被導向至第三方支付頁面,不處理信用卡資料 * 通訊透過 HTTPS 並使用 X.509 憑證保障資料傳輸安全 * 完成支付後會重新導回原始應用頁面 --- ### API 設計與後端服務 * 使用 ASP.NET Core Web API 搭配 MVC 架構 * 建議整合 Swagger 以提供 API 文件與測試功能 * 資料儲存在 MySQL 資料庫中,涵蓋用戶帳號、購物車與訂單等資訊 --- ### 通訊服務與電子郵件發送 * 通訊服務採用 .NET Core 架構 * 整合 AWS SES 寄送交易相關電子郵件 * 同時負責與物流廠商 API 連線進行配送狀態查詢與回報 * 支援多用途:發信與第三方配送 API 整合 --- ### 後端整合系統 * 系統需整合內部庫存管理系統、發票系統與電子郵件服務 * 使用 HTTP 協定與 JSON 格式傳輸資料 * 從庫存系統獲取商品圖片與庫存量 * 發票資料由發票系統產生後交由通訊服務發送 --- ### 架構圖應用建議 * 各公司繪製方式可能不同,但關鍵在於明確標示各元件間的互動 * 可進一步以不同圖示表示安全性、資料流向與基礎架構 * 後續將補充其他圖表類型(如安全架構圖、資料流圖、基礎設施圖)以輔助完整設計呈現 ## Architecture Objectives ### 架構目標(Architecture Objectives) * 所有環境部署於 AWS VPC * 架設單頁式應用(SPA),使用 Bootstrap 建立響應式介面 * 使用 AWS EC2 作為主機,並配置 Application Load Balancer * 使用 ElastiCache(Redis)快取靜態與低變動性資料 * 資料庫選用 MySQL,部署於 Amazon RDS * DNS 使用 Route 53,系統監控使用 CloudWatch * 實作 Auto Scaling 根據流量自動調整資源 * 建立 DevOps CI/CD 自動部署流程 * 傳輸與儲存資料加密,使用 X.509 憑證與 AWS KMS ### 架構限制(Architecture Constraints) * 預算上限為 20 萬美元 * 專案需於三個月內交付 * 強制使用 AWS 雲端平台 * 僅可整合公司指定第三方廠商與 API * 技術選型需符合公司內部標準與政策 ### 架構風險與對策(Architecture Risks and Mitigation) * 專案未能如期交付將影響營收與上線時程 * 為加速開發,可引進外包資源 * 使用高效能雲服務可能導致營運成本過高 * 可透過選用如 MySQL 等免費方案平衡效能與成本 * 所有風險由團隊共同識別並制定對策 * 風險與緩解方案由解決方案架構師記錄於架構審查文件 ## Data Model Diagram ### 圖表支援與組織差異 * 各公司對架構圖的使用習慣不同,有的忽略,有的過度詳盡 * 常見圖表包括資料模型、序列圖、基礎設施圖、部署圖、安全圖等 * 圖表形式與層次依組織文化與角色分工而異 ### 資料模型的重要性 * 資料模型有助於說明資料的來源、用途與存儲位置 * 應定義主資料(如顧客、商品)與交易資料(如訂單、發票)之關係 * 資料模型可與企業的業務能力模型關聯,指出資料屬於哪項業務能力 ### 資料模型建立流程 * 由解決方案架構師主導資料模型建立 * 收集來自企業架構師、資料分析師、資料治理人員的意見 * 產出為高階資料關聯圖(非物理資料庫結構) ### 範例資料模型內容 * 顧客(Customer)為主資料,可對應多筆訂單(Order)與發票(Invoice) * 訂單為交易資料,包含多個訂單項目(Order Item) * 訂單項目關聯至產品(Product),產品亦為主資料 * 購物車中商品為訂單項目的前身 * 可標註各資料類型(主資料、交易資料)以強化模型清晰度 ### 與後續設計的關聯 * 高階資料模型作為開發人員與資料庫設計人員進一步設計的基礎 * 詳細實作(如 ERD)由資料庫設計者根據此高階模型擴展而成 * 可視需要延伸至資料流圖,視覺化資料如何在系統間傳遞 ### 預告下一主題 * 下一章節將介紹序列圖,展示各元件間的互動流程 ## Data Interaction Sequence Diagram ### 序列圖的目的與角色 * 序列圖用於描述使用者與系統各元件之間的互動流程 * 協助開發團隊了解元件間呼叫順序與責任分工 * 解決方案架構師需先擬定初稿,再與團隊討論確認 ### 圖中常見的參與元件 * 使用者(Customer) * 單頁式應用程式(SPA) * Web API * 通訊服務(Communication Service) * 資料庫(Database) * 現有後端系統(庫存系統、發票系統) * AWS SES(寄送電子郵件) * 外部配送 API(物流廠商) * 第三方付款閘道(Payment Gateway) ### 標準使用者互動流程 * 使用者開啟網站,SPA 透過 API 向庫存系統請求商品列表 * 使用者將商品加入購物車,資料儲存至資料庫 * 使用者點選結帳,頁面導向第三方付款閘道 * 付款完成後導回網站,系統儲存訂單狀態至資料庫 ### 背景服務流程 * 通訊服務透過批次程序檢查新訂單 * 透過 AWS SES 寄送訂單確認郵件給顧客 * 向發票系統請求開立發票 * 通知外部物流 API 安排取件 * 持續查詢物流狀態,確認配送完成 * 配送完成後寄送發票給顧客 ### 團隊合作與設計細節 * 序列圖應專注於高階互動流程,不需呈現資料欄位或技術細節 * 詳細實作交由系統設計或開發階段定義 * 根據情境可繪製多種序列圖(如結帳流程、庫存更新流程、後台操作流程) ### 重要性與應用 * 序列圖是解決方案架構設計中的關鍵輸出 * 有助於明確劃分服務職責與資料流向 * 為開發與測試提供依據,有助於減少實作過程中的誤解 ## Application Logical Component Model ### 應用邏輯元件模型簡介 * 描述應用系統中高階邏輯元件及其組成 * 部分公司由開發團隊負責建立,部分公司要求解決方案架構師先行制定架構藍圖 * 模型有助於理解應用如何被模組化、職責如何劃分 ### Web 應用元件(ASP.NET Core 3.1 MVC) * Product View * Product Controller * Basket View * Basket Controller * Customer Account View * Customer Account Controller ### Web API 元件(ASP.NET Core 3.1 Web API,MVC Pattern) * Product Controller API * Product Model * Basket Controller API * Basket Model * Customer Account Controller API * Customer Account Model ### 資料庫元件(MySQL) * Customer Account Table * Basket Table * Basket Item Table * Order Table ### 通訊服務元件(.NET Core 3.1,MVC Pattern) * 批次處理服務(處理送貨狀態查詢) * 批次處理服務(處理電子郵件發送) * 與外部系統整合的核心中介層元件 ### 建模目的與使用時機 * 提供開發團隊明確的模組分工與實作參考 * 支援後續的開發堆疊選型與技術策略 * 可延伸用於部署圖與服務定義文件中 ### 注意事項 * 此模型為高階設計參考,不包含具體實作細節 * 須與開發團隊密切合作,以確保模型符合實際開發需求與可行性 ## Application Development Stack ### 開發堆疊決策背景 * 開發堆疊通常由企業架構團隊與開發團隊事先協議決定 * 技術選型依賴公司策略、團隊技能、應用需求而定 * 常見堆疊包含 Spring Boot(Java)或 ASP.NET Core(C#)等 ### 本案開發堆疊整體架構 * 三個主要組件:Web 應用、Web API、Worker Service(通訊服務) * 全部運行於 AWS EC2,作業系統採用 Amazon Linux 2 * 每個組件獨立部署於 T2.medium 等級的 EC2 實例 * 所有應用以 Docker 容器形式部署 ### Web 應用堆疊 * 技術框架:ASP.NET Core 3.1 * 模式:MVC 架構 * 執行環境:Apache 作為 Web Server * 執行核心:.NET Core CLR 與 .NET Native Runtime * 容器化部署:使用 Docker 包裝與部署 ### Web API 堆疊 * 與 Web 應用相同的作業系統與部署方式 * 技術框架同樣採用 ASP.NET Core 3.1 + MVC * 部署於獨立的 EC2 實例,提供服務端點與 RESTful API ### Worker Service(通訊服務)堆疊 * 適用於長時間執行的背景任務,如批次處理、寄送郵件、查詢物流狀態 * 採用 .NET Core Worker Service 架構 * 同樣部署於 Amazon Linux 2 上的 EC2 實例 * 使用 Docker 容器執行,包含 .NET Core CLR 與 Runtime ### 架構設計注意事項 * 堆疊選擇需與開發團隊密切合作、取得共識 * 文件內容非強制標準,依專案複雜度與團隊需求調整細節層次 * 明確列出開發堆疊有助於部署計畫與環境建置標準化 ## Deployment, Networking and Infrastructure Diagrams ### 部署與網路圖的重要性 * 解決方案架構師需規劃應用程式的部署與運行方式 * 無論是否採用 DevOps,都應定義釋出與部署流程 * 部署圖與網路圖有助於開發、運維與安全團隊理解整體環境設計 --- ### CI/CD 部署流程圖(範例) * 開發使用 Visual Studio Code,推送至 Jenkins Pipeline * 進行自動建置與測試 * Docker 映像推送至 AWS ECR * 部署至目標環境如 ECS、EC2、Fargate 或 Kubernetes * 可使用 Jenkins、AWS CodePipeline、Azure DevOps 等工具 * 支援預部署檢查與條件審核(如部署前測試結果、審核流程) --- ### 基礎架構與網路架構圖(AWS 環境) * DNS 使用 Route 53,主機網域如 `funnyhatshop.com` * 使用 CloudFront 作為 CDN 發佈靜態網站(如 S3 上的 Angular 前端) * 設定防火牆與安全性群組保護服務 * 架設兩個子網區於不同的可用區(AZ)以支援高可用性 * 公有子網配置 NAT Gateway,轉送請求至私有子網的後端服務 * 私有子網部署 EC2 應用伺服器、資料庫與應用邏輯層 * ElasticCache(如 Redis)用於快取加速查詢 --- ### 外部整合與服務配置 * 對接第三方付款閘道(如 Amazon Payment Gateway) * 整合外部物流廠商的 API,處理配送通知與查詢 * 郵件通知透過 AWS SES 寄送 * 錯誤與日誌記錄寫入 AWS CloudWatch --- ### 安全性元件與服務 * 使用 AWS Cognito 進行使用者身分驗證與授權管理 * 憑證與金鑰管理由 AWS KMS 處理,例如第三方 API 認證用憑證 * 圖中可擴充加入安全架構圖,細化登入、授權、存取控制設計 --- ### 跨區部署與全球覆蓋 * 使用 CloudFront 將網站部署至三個區域:美國、歐洲、南非 * 確保各區域用戶獲得低延遲的網站存取體驗 * 每個區域可部署獨立實例以支援區域容錯與備援 --- ### 補充建議圖表類型 * **安全架構圖**:顯示認證、授權、存取控制與加密策略 * **部署流程圖**:顯示手動與自動部署路徑 * **整合架構圖**:呈現內部與外部系統互通點與資料流向 * **容器與資源調度圖**:釐清 Kubernetes/Fargate 資源規劃與佈局 --- ## Define Development Requirements ### 開發需求概述 * 架構師須與資深開發者或技術主管密切合作,定義高階開發需求 * 可用於內部開發參考,也可作為外包廠商的技術交付規範 * 聚焦於技術選型、組件分工、配置要求與實作約定 --- ### 系統分層與關注點區分(Area of Concern) * **Systems of Record**:處理交易性系統與後端邏輯(如資料庫、訂單服務) * **Systems of Engagement**:前端網站與客戶互動介面 * **Systems of Integration**:API Gateway、Web Services、ETL 流程等整合機制 * **Systems of Insight**:報表與商業智慧(BI)相關模組 --- ### 配置與基礎設施需求 * 使用 Amazon Machine Image (AMI) 建立標準應用映像檔 * 透過 Ansible Playbook 建立三類容器服務:SPA、API、通訊服務 * 使用 AWS KMS 管理密鑰與機密資訊 * 授權與身份驗證由 AWS Cognito 負責 --- ### 資料庫與儲存規劃 * 使用 MySQL 部署於 AWS RDS,考量成本與穩定性 * 啟用跨可用區(AZ)同步複寫與資料加密(RDS Encryption) * 指定資料庫實例規格(如 db.m5.xlarge)滿足高效能需求 * EC2 實例使用 EBS 作為儲存,配置每台主機 10GB 用於日誌與設定檔 --- ### 檔案與圖像處理 * 商品圖像儲存於 S3,透過應用系統與庫存管理系統間的引用連結實作 --- ### 資料移轉與初始化 * 僅針對圖像資料進行初始上傳至 S3 * 無大型資料遷移或歷史資料匯入需求 --- ### 部署策略 * 採用 DevOps 流程自動部署,依據邏輯部署架構進行分層部署 * 由 CI/CD 管理版本發佈與部署至各環境(Dev、QA、UAT、Prod) --- ### 報表與輸出需求 * 開發客製化銷售報表,提供歷史銷售資料查詢功能 * 報表可作為業務監控或管理決策的依據 --- ### 補充說明 * 本開發需求為高階描述,實際實作細節由開發團隊進一步設計與拆解 * 同時提供基礎建設與運維人員實作參考,用於資源建置與設定規劃 ## Define Cost Estimates ### 成本估算的角色與重要性 * 預算估算由專案經理或 Scrum Master 主責,整合各部門輸入 * 解決方案架構師需列出所有技術與部署組件,協助團隊評估成本 * 成本預估應涵蓋開發、基礎設施、維運、授權費與外部整合成本 --- ### 成本估算的常見分類 * **基礎設施成本**:雲端資源(如 EC2、RDS、S3、CloudFront 等)依使用量預估 * **開發成本**:依工時計算,分別列出前端、後端、API、資料庫開發等任務 * **測試與品質保證成本**:包含手動與自動化測試、人力與工具支出 * **業務分析與專案管理成本**:包含解決方案架構師、BA、Scrum Master 的人力成本 * **IT 營運成本**:系統上線後之維護、監控、備援支援等 * **外部服務整合成本**:如付款閘道、物流 API、授權系統接入等成本 * **授權與工具費用**:包含 IDE、CI/CD 工具、API 金鑰、報表系統等費用 --- ### 雲端成本估算建議 * 使用 AWS/Azure 成本估算器計算 EC2、RDS、S3、CloudWatch 等資源預估開銷 * 可考慮選擇 **按量付費(pay-as-you-go)** 或 **預留實例(Reserved Instances)** 模式 * 示意例:AWS 初期部署成本估計為 \$30,000(12 個月),後續每月依使用量波動 --- ### 成本模型建議格式 * 使用 Excel 或 Google Sheets 建立可擴展的成本表 * 按功能區塊列出:網站、API、資料庫、通訊服務、CI/CD 管線等 * 每項列出:預估工時、人力角色、每小時費率、工具/授權支出、雲資源費用 * 彙總一次性成本與每月/每年持續性成本 --- ### 成本模型目的與用途 * 協助企業在決策前理解整體實作與營運支出 * 提供專案啟動會議與高階管理層審核依據 * 成為日後預算追蹤與支出管控的參考文件 --- ### 解決方案架構師的角色 * 定義所有技術與系統元件,建立成本結構基礎 * 協助確認部署架構對應的雲資源使用情境 * 協調開發、運維與業務單位輸入資料至成本模型中 ## Review the Solution Architecture with ARB ### 解決方案架構完成後的下一步 * 準備好所有架構內容與圖表後,可加入補充圖表支援完整性(選填) * 建議先進行內部**同儕審查(Peer Review)**,邀請其他架構師提供建議 * 確認架構內容涵蓋開發、運維、安全、部署等面向,確保整體一致性 ### 提交至架構審查委員會(Architecture Review Board, ARB) * 將解決方案提交給正式的審查會議,通常為企業級機制 * 成員可能包括 IT 運維、開發主管、資深管理層與業務利害關係人 * 在審查會中簡報解決方案架構內容、決策依據與風險考量 * 須準備回答與處理與會人員提出的問題與建議 ### 審查通過後流程 * 一旦獲得 ARB 批准,即可進入下一階段:**實作與交付** * 團隊可根據已審查通過的架構進行詳細設計、開發與部署作業 * 解決方案架構文件將成為實作階段的正式依據 ### 核心重點 * 內部預審與正式審查是大型企業中常見且必要的治理機制 * 架構審查是架構品質控制與組織一致性的關鍵節點 * 通過審查是架構文件轉化為實際交付的門檻與依據 # 第 7 節:Final Section ## Additional Diagrams to Support Solution Architecture ### 業務流程圖(Business Process Diagram) * 描述使用者、系統與後端應用的互動流程 * 分為使用者區(User lane)、系統區(System lane)、後端區(Backend lane) * 常用於呈現業務流程步驟,例如儲存資料、驗證、查詢與回應 * 適合由業務分析師或業務架構師繪製 * 屬於高階流程圖,能作為開發與設計參考 ### Azure 架構圖示例 * 展示使用 Azure 雲端部署的整體架構 * 包含 ExpressRoute 私有通道、Web 前端、快取層(如 Redis Cache) * 高可用架構下配置負載平衡器與多區部署 * 虛擬網路中規劃子網路與隔離機制 * 整合 Azure Active Directory 做為身份驗證與授權機制 * 展現與第三方服務如支付閘道、物流 API 的整合路徑 ### On-Premise 架構圖示例 * 展示企業自行管理基礎設施的架構設計 * 包含外部 DNS、防火牆、L4 與 L7 負載平衡器 * 分為主動(Active)與備援(Standby)區,具備高可用性考量 * 各應用分層部署於 Web Server、Middleware、DB Server * 使用 DMZ 隔離區做網路安全控管 * 整合企業內部 Active Directory 提供帳號驗證與授權 ### 安全性架構圖示例 * 外部防火牆:過濾不明與惡意流量,保護 Web Server * SSL/TLS 憑證:保護網站入口點,確保 HTTPS 傳輸安全 * Web Server 與 API Server 間使用 Secret Key 或服務憑證驗證 * 資料庫加密:確保 Data at Rest 的安全性 * API 防護:僅允許特定來源(如 Web Server)存取後端 API * 強調資料在傳輸中與靜態存放時皆須加密與保護 ## Final Word Of Encouragement --- # 參考 [Enterprise architecture](https://en.wikipedia.org/wiki/Enterprise_architecture) [TOGAF](https://zh.wikipedia.org/zh-tw/%E5%BC%80%E6%94%BE%E7%BB%84%E4%BD%93%E7%B3%BB%E7%BB%93%E6%9E%84%E6%A1%86%E6%9E%B6) [Zachman](https://en.wikipedia.org/wiki/Zachman_Framework) [Federal enterprise architecture](https://en.wikipedia.org/wiki/Federal_enterprise_architecture) [ArchiMate](https://zh.wikipedia.org/zh-tw/ArchiMate) [C4模型](https://zh.wikipedia.org/zh-tw/C4%E6%A8%A1%E5%9E%8B) # Terminology * **解決方案架構(Solution Architecture)**:針對特定業務問題設計的技術解決方案,包含業務、應用、資料與技術視角。 * **企業架構(Enterprise Architecture, EA)**:描述組織整體的業務、應用、資料與技術藍圖,確保IT與業務策略一致。 * **架構願景(Architecture Vision)**:高階描述解決方案的初步構想、範圍與非功能性需求,供涉眾初步評估。 * **概念架構(Conceptual Architecture)**:高階架構圖與元件互動關係,描述可能的解決方案選項與核心組件。 * **邏輯架構(Logical Architecture)**:抽象的應用與資料元件圖,無關實體技術平台,描述邏輯模組與互動。 * **實體架構(Physical Architecture)**:實際部署於硬體與平台上的架構圖,包含伺服器、網路、資料庫、雲服務等。 * **敏捷開發(Agile Development)**:強調快速迭代與回饋的開發方法,支援需求隨時變更,常與Scrum搭配使用。 * **Scrum**:敏捷框架之一,包含產品待辦清單、Sprint計畫、每日站會與交付可用產品。 * **Sprint 0**:Scrum開始前的準備階段,建立初步架構與技術選型,支援後續開發。 * **IT架構遠景(IT Architecture Vision)**:以IT視角描繪未來狀態與目標,通常包含假設、約束與非功能需求。 * **業務架構(Business Architecture)**:描述企業的業務流程、組織架構、角色與業務功能。 * **資料架構(Data Architecture)**:規劃資料流、資料模型與主資料管理,支援業務流程與分析。 * **應用架構(Application Architecture)**:描述應用系統模組間互動與整合方式,支援業務自動化。 * **技術架構(Technology Architecture)**:定義技術平台、作業系統、網路、硬體、開發工具與部署模式。 * **架構審查委員會(Architecture Review Board, ARB)**:組織中負責審查與批准架構決策的委員會。 * **架構制式文件(Architecture Artifacts)**:包括願景文件、解決方案架構文件、架構圖與技術選型報告。 * **涉眾(Stakeholders)**:包含業務單位、技術團隊、管理階層等,對架構決策有興趣或受影響者。 * **非功能需求(Non-Functional Requirements, NFRs)**:包含效能、安全性、可用性、擴充性等系統品質屬性。 * **TOGAF(The Open Group Architecture Framework)**:業界常用的企業架構框架,提供架構開發方法(ADM)。 * **架構約束(Architecture Constraints)**:影響設計選項的限制條件,如法規、既有系統或預算限制。 * **架構假設(Architecture Assumptions)**:在設計初期所做的前提假設,後續可能需驗證或調整。 * **架構圖(Architecture Diagrams)**:圖形化表示業務流程、資料流、系統模組與基礎設施互動關係的視覺工具。 * **持續交付(Continuous Delivery)**:持續整合與快速部署,確保軟體快速釋出並可隨時交付。 * **雲架構(Cloud Architecture)**:基於雲端服務的系統設計,包含IaaS、PaaS、SaaS等雲服務模式。 * **微服務(Microservices)**:將應用拆分為可獨立部署與維護的小服務,各自擁有資料與功能邏輯。 * **容器(Containers)**:以輕量級方式包裝應用與其依賴,常使用Docker進行部署與執行。 * **Kubernetes**:容器編排平台,支援自動部署、擴展與管理多個容器應用。 * **Fargate**:AWS 提供的無伺服器容器服務,讓用戶專注於應用部署而非基礎設施管理。 * **DevOps**:整合開發(Dev)與運維(Ops)的實務,強調自動化、持續整合與交付。 * **系統開發生命週期(System Development Life Cycle, SDLC)**:涵蓋需求、設計、開發、測試、部署與維運的流程模型。 * **問題陳述(Problem Statement)**:明確描述業務面臨的問題或機會,作為解決方案設計的起點。 * **成本估算(Cost Estimation)**:預估實施解決方案所需的預算支出。 * **架構倉儲(Architecture Repository)**:集中儲存所有架構相關的資產與知識庫。 * **基礎設施架構師(Infrastructure Architect)**:專注於網路、伺服器、儲存等IT基礎建設設計。 * **資安架構師(Security Architect)**:負責設計安全控制措施,保障系統資料與資源的安全性。 * **領域架構師(Domain Architect)**:在特定業務領域如銷售、財務中進行架構設計與指導。 * **雲端架構師(Cloud Architect)**:專注於AWS、Azure、GCP等平台上的解決方案設計與部署策略。 * **敏捷架構(Agile Architecture)**:在敏捷開發流程中持續演進的架構設計方式,強調回饋迭代與最小可行架構。 * **Scaled Agile Framework(SAFe)**:大規模企業使用的敏捷框架,涵蓋團隊層、程式層與組織層的架構與交付實務。 * **架構模式(Architecture Patterns)**:可重複使用的架構設計解法,如層次式架構、事件驅動架構等。 * **架構原則(Architecture Principles)**:指導架構決策的基本準則,如模組化、鬆耦合、高內聚等。 * **上下文圖(Context Diagram)**:顯示系統與外部實體互動的圖表,用於界定系統邊界與資訊流。 * **2B架構(To-Be Architecture)**:目標狀態架構,描述實施解決方案後預期的系統與業務結構。 * **As-Is架構(As-Is Architecture)**:現況架構,呈現目前的系統實作、流程與應用組件。 * **涉眾關注(Stakeholder Concerns)**:涉眾對系統的期望與限制條件,如風險、效能、維運成本等。 * **架構用例(Architecture Use Case)**:描述架構設計中要支援的業務場景與互動流程。 * **ETL(Extract, Transform, Load)**:資料整合技術,將資料從多個來源提取後轉換並載入資料倉儲。 * **ESB(Enterprise Service Bus)**:企業服務匯流排,整合各系統間的通訊與訊息轉換平台。 * **API(Application Programming Interface)**:系統對外提供服務的標準介面,支援整合與擴充。 * **UML(Unified Modeling Language)**:統一建模語言,用於描述軟體系統結構與行為的標準符號與圖表。 * **認證(Authentication)**:識別使用者身份的過程,通常以帳號密碼、OAuth、SSO等方式實作。 * **授權(Authorization)**:判斷已驗證使用者是否有權限執行特定操作的機制。 * **加密(Encryption)**:透過演算法將資料轉換為不可讀格式,以防止未授權存取。 * **雜湊(Hashing)**:產生資料指紋的一種不可逆運算方式,常用於驗證資料完整性與密碼儲存。 * **網段(Subnet)**:IP位址的子集合,用於區分與管理網路中的主機。 * **DMZ(Demilitarized Zone)**:非軍事區,網路安全架構中用於放置公開服務的隔離區域。 * **系統操作(System Operations)**:指系統部署後的維護、監控、效能管理與問題處理流程。 * **保固期(Warranty Period)**:系統上線後由架構師或開發團隊負責觀察與調整的一段時期。 * **持續整合(Continuous Integration, CI)**:開發人員將程式碼頻繁合併至主幹並自動建置與測試的實務。 * **持續部署(Continuous Deployment, CD)**:將通過測試的程式碼自動部署到生產環境的流程。 * **技術堆疊(Technology Stack)**:建構與執行應用程式所使用的技術組合,如前端框架、後端語言、資料庫等。 * **應用元件(Application Components)**:應用系統中的模組、服務與服務介面等邏輯或實體單元。 * **資料流圖(Data Flow Diagram, DFD)**:顯示資料在系統中流動方式的圖表,強調處理與來源/目的地。 * **部署拓撲圖(Deployment Topology Diagram)**:描述系統在物理或虛擬基礎設施上的部署方式圖表。 * **架構倉儲工具(Architecture Repository Tools)**:用於儲存、版本管理與協作架構文件的平台,如Sparx EA、Archi。 * **架構治理(Architecture Governance)**:架構相關決策、標準、流程與審查制度的總稱。 * **架構回饋迴圈(Architecture Feedback Loop)**:架構設計與實作中持續獲得回饋與調整的流程。 * **業務用例(Business Use Case)**:描述業務流程中各角色與系統的互動情境。 * **風險矩陣(Risk Matrix)**:評估架構風險發生機率與影響程度的工具,常用於決策過程。 * **技術債(Technical Debt)**:為了快速交付而做出的次佳技術選擇,日後需付出額外維護成本。 * **架構願景文件(Architecture Vision Document)**:描述解決方案初步構想的文件,用來協助涉眾理解業務問題、評估解決選項與預估投資效益。 * **Sprint 架構文件(Sprint Architecture Document)**:在敏捷開發初期(如 Sprint 0)編寫的文件,用以描述高階架構構想與實作建議。 * **問題陳述(Problem Statement)**:由業務使用者定義的主要痛點或新需求,說明業務與 IT 領域受到哪些挑戰或需改善。 * **業務願景聲明(Business Vision Statement)**:描述業務期望透過本解決方案達成的成果與未來目標,作為架構設計的指導方針。 * **變更驅動與機會(Change Drivers and Opportunities)**:指出推動架構變更的原因(如法規、競爭、市場壓力)與潛在效益。 * **業務能力衝擊(Business Capability Impact)**:列出受影響的業務能力,並標註為新增、變更或移除,通常可用能力模型或價值鏈圖表示。 * **業務與技術目標(Business and Technology Objectives)**:具體說明解決方案要解決的業務目標,以及系統遷移、替換、汰除等技術目標。 * **架構願景(Architecture Vision)**:包含設計原則(principles)、假設(assumptions)與限制(constraints),以及現況(As-Is)與目標(To-Be)概念架構。 * **As-Is 概念架構(As-Is Conceptual Architecture)**:用圖示方式呈現目前系統架構、整合與業務環境的全貌。 * **To-Be 概念架構(To-Be Conceptual Architecture)**:描繪解決方案實施後的預期架構狀態,包含應用、資料、安全與技術元件。 * **非功能需求(Non-Functional Requirements, NFRs)**:高階的系統品質屬性,例如效能、可用性、容量、操作性、安全性、持續營運等。 * **提案解決方案選項(Proposed Solution Options)**:列出可行的建置選項,如內部開發、外部採購、合作開發,及相關技術與平台。 * **技術選項(Technology Options)**:針對不同的解決方案,提供相應技術堆疊、部署模式(雲端/地端)與現有技術可重用性。 * **架構準則與標準(Architecture Guidance and Standards)**:解釋所依循的架構原則、標準或框架(如 TOGAF、SAFE),確保一致性與可治理性。 * **粗略預算估算(Rough Cost Estimate)**:由開發/技術團隊提供的初步成本預估,包含授權費用、開發費、人力資源與潛在雲端支出等。 * **高階時程(High-Level Timeline)**:簡略列出實施時程與重要里程碑,協助業務預估專案進度與資源配置。 * **風險評估(Risk Assessment)**:指出實施與不實施該解決方案可能面臨的重大風險,有助於業務評估投資決策。 * **可行性分析(Feasibility Analysis)**:評估方案是否實際可行,從技術、成本、人力與風險角度加以說明。 * **業務案例(Business Case)**:支持投資的財務與策略分析,說明解決方案對業務價值鏈的貢獻與投資報酬率。 * **架構原則(Architecture Principles)**:指導解決方案設計與決策的基本準則,例如可擴展性(Scalability)、模組化(Modularity)、重用性(Reusability)等。 * **架構假設(Architecture Assumptions)**:在提出方案選項時所做的前提假設,例如「使用者數量不超過1000人」、「所有系統皆支援API整合」。 * **架構限制條件(Architecture Constraints)**:限制方案設計的條件,例如「必須使用現有ERP系統」、「不得引入開源軟體」、「僅能部署於Azure」。 * **系統互動通道(Interaction Channels)**:使用者將透過哪些介面與系統互動,如Web、Mobile、API、第三方整合平台。 * **業務持續性(Business Continuity)**:系統需具備的備援與災難復原機制(DR),保證業務不中斷運作的能力。 * **資安需求(Security Requirements)**:對資料保護與系統安全的要求,如身分驗證、授權、加密、審計日誌、資安法規遵循(如GDPR)。 * **操作與監控需求(Operations and Monitoring Requirements)**:系統上線後的運維策略,包括監控工具(如Prometheus、CloudWatch)、告警設定與維運手冊。 * **網路需求(Networking Requirements)**:解決方案所需的網路架構與規則,例如子網(Subnet)、防火牆規則(Firewall Rules)、VPN通道、DMZ設計。 * **使用者介面需求(User Interface Requirements)**:前端介面設計上的指引與期望,例如支援多語系、無障礙設計、響應式設計。 * **架構需求(Architectural Requirements)**:對整體架構應具備特性之要求,如高度可用性、可觀測性、容錯能力、部署自動化。 * **應用路線圖(Application Roadmap)**:列出未來應用系統的預定遷移、整合或淘汰時程,支援長期IT規劃。 * **現有系統重用(Reuse of Existing Systems)**:評估是否可利用現有平台、應用或元件,以降低建置成本與時程。 * **架構決策紀錄(Architecture Decision Records, ADRs)**:記錄每項關鍵架構選擇背後的背景、選項、評估依據與決策結果。 * **涉眾評審(Stakeholder Review)**:與業務、IT與高層等涉眾確認架構構想、收集意見並修正初步方案。 * **多方案比較分析(Solution Option Comparison)**:以表格或圖表比較建置/採購/合作等選項的優劣,包括風險、成本、技術成熟度等。 * **架構輸出物(Architecture Deliverables)**:在Vision文件中定義後續應產出的工件,例如詳細架構文件(Solution Architecture Document)、部署藍圖、技術規格書。 * **估算假設(Estimation Assumptions)**:說明成本與時程預估中使用的假設,例如「第三方API已就緒」、「外部供應商能準時交付」。 * **初步供應商分析(Preliminary Vendor Analysis)**:若業務尚未指定廠商,列出建議供應商與選型評估標準(如功能完整性、技術支援、總體擁有成本)。 * **授權與法遵考量(Licensing and Compliance Considerations)**:評估所提方案是否涉及授權費用、契約限制或必須符合特定法規。 * **建議行動(Recommended Action)**:基於所有前述內容,提供清晰建議,例如「進入POC階段」、「採購SaaS方案」、「不建議繼續進行」。 * **產品負責人(Product Owner)**:代表業務利益相關者,負責定義產品需求與優先順序。 * **解決方案架構師(Solution Architect)**:負責針對特定業務需求設計整體解決方案,涵蓋應用、資料、技術與整合面向。 * **Scrum 主持人/專案經理(Scrum Master / Project Manager)**:協助團隊排除障礙,確保專案順利推進與流程符合敏捷原則。 * **業務分析師(Business Analyst)**:負責分析與記錄業務需求,轉換為技術可執行的規格。 * **資深開發者/技術負責人(Lead Developer)**:負責技術設計與開發指導,協助架構師完成實作細節。 * **測試負責人(QA Lead)**:主導測試策略、測試案例設計與品質保證活動。 * **IT 營運人員(IT Operations)**:負責系統部署、維運、監控與資安維護等生產環境管理。 * **架構審查委員會(Architecture Review Board, ARB)**:由企業架構師與各領域架構師組成,負責審核與批准架構決策。 * **企業架構師(Enterprise Architect)**:關注整體企業架構藍圖,確保業務與 IT 策略對齊。 * **領域架構師(Domain Architect)**:專注於特定業務領域的架構設計,如財務、人資、零售等。 * **As-Is 架構(As-Is Architecture)**:現況系統架構,描述現有解決方案的技術與運作情況。 * **To-Be 架構(To-Be Architecture)**:預期的目標架構,描述未來解決方案的實施樣貌。 * **C4 模型(C4 Model)**:一種漸進式架構建模方法,分為四個層級:情境(Context)、容器(Container)、元件(Component)、程式碼(Code)。 * **系統情境圖(System Context Diagram)**:C4 模型第一層,用來展示系統與外部實體之間的互動關係。 * **功能影響圖(Capability Impact Model)**:顯示新解決方案將如何影響現有業務功能或能力的圖示。 * **業務問題陳述(Business Problem Statement)**:定義業務遇到的痛點、需求或限制,作為解決方案設計依據。 * **業務願景聲明(Business Vision Statement)**:說明業務期望透過此解決方案達成的目標與價值。 * **變更驅動與機會(Change Drivers and Opportunities)**:推動本次架構變更的因素與所帶來的潛在價值。 * **架構原則(Architecture Principles)**:導引架構設計的基本規則,例如安全性、可用性、擴展性。 * **架構假設(Architecture Assumptions)**:在設計過程中預設成立的條件,可能影響技術選擇與整合方式。 * **架構限制條件(Architecture Constraints)**:業務或技術上的限制條件,例如預算、地理位置、法規遵循等。 * **非功能性需求(Non-Functional Requirements, NFRs)**:與系統品質相關的需求,如效能、可用性、可擴展性與安全性。 * **初步解決方案選項(Solution Options)**:提出多種可行技術方案供業務比較選擇。 * **估算(Estimation)**:針對時間、人力與成本的初步評估,常用 T-shirt sizing(S/M/L/XL)表示。 * **T-shirt Sizing**:一種估算技術,根據工作量粗略分類(小/中/大/特大)以便於高階規劃。 * **雲端服務(Cloud Services)**:如 EC2、RDS、S3、CloudFront、SES 等 AWS 雲端服務,用以支援應用部署與運作。 * **自動擴展群組(Auto Scaling Group)**:根據流量負載自動擴增或縮減伺服器實例的機制。 * **負載平衡器(Load Balancer)**:分配流量至多個伺服器實例,提升系統可用性與效能。 * **監控服務(Monitoring Services)**:如 CloudWatch 等工具,用來監控系統狀態與發出警示。 * **寄送服務(Email Service, SES)**:提供電子郵件傳遞功能,常用於交易通知與發票寄送。 * **內容傳遞網路(Content Delivery Network, CDN)**:如 CloudFront,用來加速不同地區使用者存取速度。 * **OAuth 認證(OAuth Authentication)**:開放式授權協議,支援第三方平台(如 Google、Facebook)登入。 * **網路隔離(Subnet, VPC)**:在雲端環境中實作網路分段與安全隔離的設計。 * **資安憑證(X.509 Certificates)**:用於 HTTPS 與資料傳輸加密的標準憑證。 * **例外處理與稽核(Exception Handling & Auditing)**:記錄與回報系統異常,以及存取與變更資料的操作紀錄。 * **CI/CD 管線(Continuous Integration / Continuous Deployment Pipeline)**:自動化建置、測試與部署流程,提高交付效率與穩定性。 * **微服務架構(Microservice Architecture)**:將應用拆分為小型獨立模組,可獨立開發與部署。 * **容器化(Containerization)**:使用技術(如 Docker)將應用與其依賴封裝,便於移植與部署。 * **解決方案實施計畫(Solution Implementation Plan)**:根據所選方案規劃的開發、測試、部署與上線策略。 * 架構審查委員會(Architecture Review Board):由多位架構師與相關利害關係人組成,負責審查與批准解決方案架構的設計與實施。 * 解決方案架構(Solution Architecture):針對特定業務問題或需求所設計的整體技術與應用架構。 * 非功能性需求(Non-Functional Requirements, NFRs):系統在性能、可用性、安全性、擴展性等方面的需求,非功能層面。 * 架構視野(Architecture Vision):高層次、戰略性的架構描述,通常用來描繪未來架構的目標與原則。 * 現況架構(As-Is Architecture):描述現行系統架構的實際狀況,做為評估改變前的基準。 * 目標架構(To-Be Architecture):描述在特定時間點未來欲達到的系統架構樣貌。 * 架構目標(Architecture Objectives):解決方案架構欲達成的技術與業務目標。 * 架構限制(Architecture Constraints):在設計與實施過程中受到的條件限制,如技術選型、預算或資源。 * 架構風險(Architecture Risks):在架構設計與實施過程中可能對成功產生威脅的因素。 * 企業能力地圖(Business Capability Map):描繪企業提供價值所需具備的核心與支持能力。 * 應用路線圖(Application Roadmap):規劃應用系統在未來數年內的發展、替換、淘汰與整合計劃。 * 概念架構圖(Conceptual Architecture Diagram):以高層次方式呈現系統主要組成與其互動關係。 * C4 模型(C4 Model):一種分層次的系統架構建模方式,分為上下文圖、容器圖、元件圖、程式碼圖。 * 用例圖(Use Case View):呈現系統中使用者與系統功能互動的情境圖。 * 服務水準協議(Service Level Agreement, SLA):系統服務的可用性與響應時間等標準的協議。 * 容錯性(Fault Tolerance):系統在部分元件失效時仍可維持運作的能力。 * 自動擴展(Auto Scaling):根據系統負載自動調整資源以維持性能的機制。 * 負載平衡器(Load Balancer):分散流量至多個伺服器以提升性能與可用性。 * 地區冗餘(Regional Redundancy):在多個地理區域部署以確保業務持續性。 * CDN(Content Delivery Network):分散式伺服器架構,提升全球使用者的內容存取速度。 * AWS CloudFront:Amazon 提供的 CDN 服務。 * AWS Cognito:AWS 提供的身份驗證與授權服務。 * OAuth:開放標準的授權協議,允許使用者第三方授權訪問其資訊。 * 多因素驗證(MFA):需提供兩個或以上驗證因子才能進行登入的安全機制。 * 日誌管理(Logging):系統中對操作、錯誤等事件的紀錄,用於偵錯與監控。 * 監控服務(Monitoring Service):追蹤系統運作狀態與資源使用的工具與流程。 * 雲端基礎設施(Cloud Infrastructure):雲端平台提供的運算、儲存、網路等基礎資源。 * 雲端運算服務(Cloud Services):例如 AWS、Azure 提供的各種即用型運算資源與平台服務。 * 私有子網(Private Subnet):雲端中隔離的網段,僅允許內部或有限訪問。 * 公有子網(Public Subnet):允許外部存取的網段,用於對外服務。 * 防火牆規則(Firewall Rules):管控進出流量允許或拒絕的設定。 * API Gateway:用來管理、保護與監控 API 存取的服務。 * 資料加密(Data Encryption):確保資料在傳輸中與儲存時的機密性。 * 資料遷移(Data Migration):從舊系統將資料轉移到新系統的過程。 * 部署策略(Deployment Strategy):定義如何將應用程式部署到目標環境的方式與流程。 * CI/CD(Continuous Integration/Continuous Deployment):持續整合與持續部署,提升交付效率與品質。 * Jenkins:自動化建置與部署的開源 CI/CD 工具。 * 容器化(Containerization):使用容器(如 Docker)封裝應用以提升可攜性與一致性。 * Docker:主流的容器技術平台。 * Kubernetes:容器協調管理平台,支援高可用與自動擴展。 * RDS(Relational Database Service):AWS 提供的關聯式資料庫代管服務。 * EC2(Elastic Compute Cloud):AWS 提供的虛擬伺服器服務。 * S3(Simple Storage Service):AWS 的物件式儲存服務。 * KMS(Key Management Service):AWS 提供的加密金鑰管理服務。 * 微服務架構(Microservices Architecture):將應用程式拆分為獨立可部署的小型服務的架構風格。 * MVC(Model-View-Controller):常見的軟體開發架構模式,分離資料處理與使用者介面。 * E-R 模型(Entity-Relationship Model):資料庫結構的實體與關聯模型。 * BPMN(Business Process Model and Notation):用來建模業務流程的圖示標準。 * SLA違約風險(SLA Breach Risk):指系統若無法滿足 SLA 所帶來的業務風險。 * 認證(Authentication):確認使用者身分是否合法的程序。 * 授權(Authorization):確認使用者是否有權限執行特定動作或存取特定資源。 * 整合架構(Integration Architecture):描述系統之間資料交換與互通的技術架構。 * 資料治理(Data Governance):確保資料品質、權責與保護的制度與流程。