一個 Data Engineer 的 System Design 課程心得
這堂課主要開放給有一些工作經驗的 Backend Engineer & Data Engineer ,會來參加的人我想應該都是年輕有為的工程師吧!(畢竟要抽出連續八週晚上時段,比較資深有家庭的工程師可能沒有辦法配合這樣的時間)
課程主要分成三個部分:內部講師主講(三週)、學員分享(三週)、外部講師分享(兩週)。
從課程大綱就可以知道這不是一堂坐在台下放空聽講的課程,而是學員們也得拿出自己的經驗與研究彼此交流的一個課程,與其說是課程對我來說更像是一個提供工程師們每週有一個主題然後彼此交流的空間。
畢竟 Systen Design 是個包羅萬象的龐大題目,要在短時間內讓大家有些收穫我覺得這樣的互動方式可能是最好的選擇了,然而同樣的主題與內容可能每個人收穫到的部分都不同,以下就分享一下我自己對這八週不同主題的收穫。
我覺得收穫會分成兩個面向:
1. 外部講師分享的部分:
分別由 91App 架構師及 NetBase 技術長來分享,兩位都是依照他們公司的實際情況與案例來探討 System Design,畢竟是企業級的大型系統,所以內容都是很完整且充實的,在 91App 的案例中可以聽到大型系統的演進過程,面對資料量不斷劇增他們怎麼一步一步的改善他們的系統,而 NetBase 則是分享了他們內部的開發模式 DDD。
這種實際的運作細節是網路上查不到的,只能靠內部人員現身說法,所以我覺得有這樣的分享課程很寶貴,也很開心可以聽到這兩位講師的精彩分享。
2. 內部講師&學員分享:
學員分享基本上是繼承內部講師的主題去做延伸,屬於比較單點式的探討,從一開始的 RDBMS, Cache, Load Balancer ……等方向、到文本相關的全文檢索、關鍵字搜尋、模糊搜尋,許多東西我們都有實務經驗但知道怎麼使用怎麼 call function 卻不清楚背後的運作邏輯,透過這樣的課程引導對我建構整個系統的背後架構運作有很大的幫助。
舉個例子,自己有做過兩三年的地理圖資的資料處理,也自己摸索出在面對大量資料時要怎麼切割資料、怎麼存資料才有效率,但卻不知道實際上這樣的處理做法有個正式的名詞叫 Quad Tree,也不知道 DB 的儲存方式是用 R Tree,透過這堂課有機會了解背後的原理邏輯,在往後遇到相關的應用上我應該可以有更好更全面的架構設計。
另外也從學員分享作業的結果上發現一些有趣的事情,大家都是工程師但面對同樣的主題每個人的切入點都不同,有些人會從學術理論角度切入,有些人喜歡從資料結構面探討,也有人喜歡從應用面來分享討論,透過不同的切入角度也讓主題更活化。
總結來說,我覺得如果你抱持著要在八堂課獲得 System Design 的大全的話那你可能會很失望,但是如果你是抱持著一個 open mind 來吸收一些新知識的話,那我覺得八堂課可以獲得很多意想不到的技術經驗。
AppWorks School System Design 課程介紹可參考:
https://school.appworks.tw/system-design-class/
Batch #18 軟體培訓營招生倒數:
關於我
6年大數據資料處理、分析經驗,領域涵蓋醫學影像資料處理分析、電信資料處理分析、地理圖資處理分析、MarTech資料處理分析。