嗨,各位鐵人夥伴,前天了解完團隊夥伴後,我們就從一張最簡化的系統架構圖,來看看一個系統到底是如何運作的吧!
以下是我親手畫的圖,目的在於讓新人秒懂,不追求精準,只求好懂!
下圖請不要考慮是部署在哪,也就是不要考慮圖中的內容”跑在哪“,否則很容易亂掉,部署的內容後續章節會提到
舉個例子:
使用者 A 透過某個論壇發文。當他在瀏覽器寫完文章並按下「送出」後,瀏覽器會把文章內容傳送給 Application。Application 接收後,會先執行各種邏輯(例如檢查文章內容、確認使用者權限),然後把資料寫入 DB。當 DB 成功儲存後,會回傳成功訊息給 Application,Application 再通知瀏覽器「發文成功!」,這才是一個完整的流程。
小提醒: 雖然有系統可能沒有資料庫,但那確實不是常見的樣態。大多數系統都會有資料庫來永久儲存結構化資料。
我等後續也會忽略它,因為在畫比較大的架構圖時通常不會單獨去提。但新人一定要知道,永久儲存層除了資料庫外,還有檔案儲存空間(Disk)。
DB 負責存「結構化」的資料,那如果使用者上傳的是「非結構化」的資料呢?例如圖片、影片、文件檔。這些通常會存在 Disk 上。你甚至可以把日誌檔(Log)也想成是非結構化資料的一種,這些也通常會存放在 Disk 上。
我們剛剛說的 Application 其實是個大統稱,有些系統可以把程式碼分成兩包,也就是我們常聽到的「前後端分離」。
所以,是不是所有系統都是前後端分離呢?不一定!老舊一點的系統通常不會,這種架構有個專有名詞叫 Monolith(單體式架構)。但沒有絕對的好壞,這都取決於系統的架構設計和業務需求。
前面的例子都是使用者在操作時即時發生的。但其實一套系統有很多業務需求是不那麼要求即時性,且處理資料量可能比較大。這時候,批次處理就是你的好夥伴!
如果你認為資料庫只能存資料,那可就大錯特錯了。資料庫裡面有個東西叫 Store Procedure,可以讓你直接在資料庫裡寫複雜的運算邏輯。
那業界有在用嗎?當然有,而且絕對不少!會不會逐年變少不一定,但你身為新人,一定要知道它的存在。
大型企業的系統,很少會獨立做完所有事情。**系統與系統之間的串接(Integration)**是非常常見的。
外部系統是個大哉問,上面的圖只有兩個外部系統都算是極度簡化了,我們留待後續章節再來深入討論。
累了嗎?還沒完!大公司的系統大多數又會區分不同的環境(Environment)。這是在開發過程中非常重要的概念。
補充: 不一定所有系統都會有這四個環境,有的會略過 UAT。這背後的原因有很多,可能是歷史因素、成本考量或人力配置,你不用太糾結,只要知道它們各自的功能就好。
---
今日鐵人精神:
今天我們從宏觀的角度看了一個系統的全貌。記住,一個系統並非孤立存在,它是由許多元件、邏輯和環境所組成的。理解這些基本架構,是你在 IT 世界闖蕩的第一步。
明天,我們會更深入探討資料庫的世界,明天見!