iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 1
2

這個系列的目的?

現今的軟體已經不再是單一執行檔、單一電腦走天下。
幾乎所有眼前的服務皆是由許多的小元件組成,他們怎麼彼此跨越網路交換資訊呢?
又怎麼在彼此身處異地的情況下完成任務?
再更近一步,我們知道網路是不可靠的,隨時可能有斷線、掉封包或是被瞬間高流量塞爆的危機,面對這樣的環境如何讓系統繼續運作而不至崩潰?
或著我們有多少把握,運作一段時間後,這些分散在各地的元件手中的資訊是一致的?
元件或是儲存的資料失效後如何回復?
備份成三份、五份有沒有效?

很多人都說,後端工程師/系統架構師最難當,因為牽涉的範圍太廣,又沒有標準答案。
一路從File System、Cache、Virtualization、Message Queue到雲端平台如Kubernetes等都要略知一二,
甚至要能夠選擇適當的元件設計出一個新的系統架構。

最困難的也許是,市面上似乎沒有太多書籍能夠有系統的將所有主題全部涵括進去,或是有效率地培養這方面的能力。

究竟該去哪裡可以找到所有的答案?

學校

入學的那一年剛好可以說是資工系開始展露頭角的那一年。
從大一到研究所,每年看著學校的開課重點和專題題目,就知道今年輪到哪一個名詞當主角。
一路從Computer Vision、Cloud、Big Data、IoT輪到近年的AI。
但是最吸引我的仍然是Cloud與他的基礎 - 分散式系統

也許是因為在這個領域,系統裡的每一個元件如同人在世界上一樣,
認份的做著自己的工作,再透過人與人的交流完成大於自身的成就。

也許是因為數學在這個領域不是絕對,
現實與理論的妥協帶來了所謂工程的浪漫。

然而,學校並沒有以分散式系統為主題的課程。對分散式系統的認識也只有手上碰過的幾個專案如: Hadoop, OpenStack 與 Kubernetes 等

因此雖然都已經寫好論文並口試畢業了,反倒是研究所最後一年延畢去德國 TU Dresden 交換,才認真上了 "Distributed System" 這一門課。
也才知道這一門課有多廣,牽涉現今的軟體有多深。

就像上面的那一系列問題,
學習完後,才瞭解其實每一個,都曾帶領許多人產出了許多論文與研究成果。

筆記大綱

因此這一系列的文章,將會更像是我自己的學習筆記,
嘗試將一學期的所學濃縮整理出基礎理論與經典實作,在未來面對問題時,心中有著前人走過的路做參考。

我將會以兩門課的內容為主軸,分別是

  1. TU Dresden - System Engineering I&II (上課投影片沒有放上網路公開)
  2. MIT 6.824 - Distributed System

以下是未來的將會涵蓋的幾個主題:

希望能夠邊整理筆記的同時,可以把MIT 6.824的幾個實作作業完成 Q_Q

最後

Note:
系統這一件事沒有標準答案,
因此大家看到有問題的部分,歡迎隨時發起討論!

明天將從最基本的 CAP理論Consensus 開始談起~


下一篇
Day 2 - 我的C是你的C嗎,介紹CAP Theorem與ACID/BASE
系列文
分散式系統 - 在分散的世界中保持一致30

尚未有邦友留言

立即登入留言