一探大型軟體的系統架構

仁哥
Aiworks
Published in
May 19, 2022
回到令人懷念的 AppWorks School 上課啦!

Hello, 我是 Darren, 可以叫我「 大仁哥 」,我也是 AppWorks School Batch #12 畢業的校友。最近上完由我的母校 AppWorks School 為期八週的「系統設計 System Design 」課程,想要跟大家分享我的課後心得。

篩選學生

一開始一定要來個 AppWorks School ( 以下就簡稱為 School ) 的優良傳統 — 嚴謹篩選機制,跟挑選入學生一樣,系統設計課程一樣有篩選機制,目的是確保每個想要來參加課程的人是真的「需要」並且「能夠」完成整個八週課程的學生。

報名者需要填寫一張 Google Sheet,內容包括目前工作內容、使用到的雲端服務商、對於系統設計的經驗和公司乘載的流量等等,表單內容可以讓 School 工作人員更認識報名者的狀態,評估這堂課是不是真的有幫助到報名者。

通過並且被邀請參加課程之後,需要簡單的繳一些保證金,如果課堂中規定都有遵守 ( 作業和出缺席規定 ) 的話,最後一堂課保證金會全數退還。

「 這堂課不會由我全部講完 」

這是我在第一堂課聽到講師 Arthur 講的話,我馬上知道這會是不一樣的課。這次系統設計課程的風格是屬於開放討論類型,講師不會從頭到尾講完,而是適時拋出問題,所以學生們有很多機會一起集思廣益並舉手發言。

像是第一堂課的主題是「 如何設計一個短網址服務 」,過程中的問題有短網址的需求有哪些?如何處理超大流量問題?要怎麼設計短網址的樣式才夠使用?等等。

課程因為所有學生的參與變得生動活潑,每個人的想法或是意見都會激發自己更多的想法,下班兩小時時間的課程也變得很快就結束。

回顧 System Design Week1 課程錄影:https://youtu.be/K1PnGF4CwCc

一探大型軟體的系統架構

這一系列課程中,要說讓我印象最深刻的部分,就是講師 Arthur 帶領我們一探大型系統設計的世界。

第一個是討論有關社群網路服務平台的系統設計,一般工程師不是在像是 Twitter 或是 Facebook 這樣的擁有極大流量的公司上班的話,很難有機會接觸到大流量系統設計,像是討論處理著名的「 名人問題 」等等。

再來就是討論如何做出像是 Uber 一樣的服務,其中討論了包括空間查詢方法 ( Spatial Search ) 以及如何即時的提供使用者鄰近有空的司機。

邀請業界資深工程師分享

講師 Arthur 在這一系列的課程中安排了兩次的業界講師分享。

第一次邀請的是 91APP 的 Sean。91APP 從一開始人數不及 50 人的小規模公司,成長至現在算是台灣第一家 IPO 的 SaaS 公司,Sean 分享了公司蛻變過程中的組織更動、人員配置、開發設計上思想的變遷。

第二次邀請的是 NetBase 的 Willy 來主講。隨著微服務化 ( Microservice ) 崛起,領域驅動設計 ( Domain-Driven Design,DDD ) 也為人所討論,課程中 Willy 分享了在 NetBase 中是如何一步步的落實 DDD,讓現在的公司內部具有共同語言、更清楚的服務邊界以及以服務的角度來設計系統。

該是學生們上台的時候了!

回想上課的那八週,讓我比較有壓力的就是作業,因為作業都是報告。

這次系統設計的作業都是報告,主題包括分享在公司系統設計上採過的 bug、介紹模糊搜索、介紹全文索引等等,到最後一週是分享自己公司處理過棘手系統設計上的問題。

雖然準備報告的時間很久,也因此更加認識了一些主題。例如我們常常使用的全文搜尋系統,背後是利用倒排索引 ( Inverted Index ) 的技巧,搭配一些演算法之後,讓使用者可以利用單詞或是一段句子來搜尋想要的文章。

除了自己準備的範圍之外,藉由同學們上台報告的時候還可以吸收其他範圍的知識,只能說這樣的上課模式,不怕學不到新知,只怕自己腦容量不夠。

仁哥的補充

對於一個平日需要上班的工程師而言,這堂課確實需要一點下班後的準備時間,但是透過這些準備以及上課跟大家的意見交流,收穫完全超過我的想像,像是可以聽到來自不同公司的工程師說明公司內部系統設計上的處理辦法,這點就是一般看書或是教學影片接觸不到的。最後非常感謝 AppWorks School 讓我有機會可以再次的回到學校上課,School 舉辦的活動不管是培訓還是課程一直都很用心以及內容又豐富,有機會的話大家一定要來參加!

AppWorks School System Design 課程介紹可參考:

https://school.appworks.tw/system-design-class/

Batch #18 軟體培訓營招生倒數中:

https://bit.ly/39rFeXs

--

--

仁哥
Aiworks
Writer for

趁年輕把想做的事盡量做|目前使用 Java 的後端工程師| 音樂欣賞者|宗教文學好像不錯