Type of Credit: Partially Required
Credit(s)
Number of Students
現代的軟體系統幾乎都是由跨機器、甚至於跨不同網路的分散式系統構成。相對於單機使用的軟體系統,分散式系統無論在正確性、穩定性、擴充性與安全性都面臨許多軟體設計上的挑戰。本課程由軟體架構角度出發,將介紹當代分散式系統的特性、結構、與各種可能的系統運作模式與其核心軟體知識。包含: 分散式系統的基本模型、網路軟體設計基礎知識、同步(Remoting)與非同步通訊模式(Group/Message-based/Shared Memory)、Naming、Coordination、分散式交易、Web服務、微服務、事件朔源、CQRS與區塊鏈等技術。
* 修課同學須具備基礎程式語言知識,課程Lab大部份會以Java或JavaScript(Node.js)進行
* 修課同學須自備筆記型電腦
能力項目說明
學生在修習本課程之後,應具備以下能力:
1. 了解分散式系統的重要性與設計挑戰
2. 針對課程中介紹之各類型分散式系統,具備實作能力。
3. 了解軟體架構如何影響分散式系統的設計。
4. 能應用並整合所學習到之分散式系統設計考量與概念,建構出完整之分散式軟體系統
5. 了解分散式系統的技術與最新發展趨勢
教學週次Course Week | 彈性補充教學週次Flexible Supplemental Instruction Week | 彈性補充教學類別Flexible Supplemental Instruction Type |
---|---|---|
課程進度請依Moodle公告為準
第一週: Course Introduction: 教學大綱: 上課方式、課程要求、評分標準 / 課堂講授 上課3/課後3
第二週: Software Architecture Overview, Software Quality Attributes and Design Trade-Offs / 課堂講授與Lab 上課3/課後3
第三週: Network / 課堂講授與Lab 上課3/課後3
第四週: IPC / 課堂講授與Lab 上課3/課後3
第五週: Remoting (Cases: Java RMI, EJB3, gRPC)/ 課堂講授與Lab 上課3/課後3
第六週: Indirect Communication (Group Communication、MOM、 Shared Memory) / 課堂講授與Lab 上課3/課後3
第七週: Naming and Discovery (Cases: UPnP mDNS/DNS-SD) / 課堂講授與Lab 上課3/課後3
第八週: Coordination / 課堂講授與Lab 上課3/課後3
第九週: 期中考
第十週: Enterprise Application Architecture
第十一週: DevOps and Cloud Native Trends
第十二週: Virtualization (Virtual Machine and Docker) / 課堂講授與Lab 上課3/課後3
第十三週: Microservices / 課堂講授與Lab 上課3/課後3
第十四週: 校慶運動會停課
第十五週: Distributed Transactions / 課堂講授與Lab 上課3/課後3
第十六週: Event Scourcing and CQRS / 課堂講授與Lab 上課3/課後3
第十七週: 端午節假期
第十八週: Project Demo
課堂表現(10%)
Lab (30%)
期中考(20%)
學期專題(40%): 含書面報告寫作、系統開發與口頭展示
** 本課程對生成式AI工具之政策:需要時可使用,但需揭露使用時機、用法、用途。使用人必須對結果的正確性負全責。
1、Distributed Systems,3/e, Maarten van Steen and Andrew S. Tanenbaum 2018
2、Distributed Systems: Concepts and Design; 5/e, 2012
George Coulouris, Jean Dollimore, Tim Kindberg, Gordon Blair
3、Distributed Systems with Node.Js: Building Enterprise-Ready Backend Services, 2020, Hunter, II Thomas, Oreilly
4、Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services,2019,Brendan Burns, Oreilly
5、Pattern-Oriented Software Architecture Volume 4 : A Pattern Language for Distributed Computing,2007,Frank Buschmann, Kevin Henney, Douglas C. Schmidt,Wiley
6、Pattern-Oriented Software Architecture Volume 2: Patterns for Concurrent and Networked Objects,2000,Douglas Schmidt, Michael Stal, Hans Rohnert, Frank Buschmann
7、教師自編教材