iT邦幫忙

2025 iThome 鐵人賽

DAY 3
0
佛心分享-IT 人自學之術

前輩沒空教?你的第一份甲方IT三十天自學指南系列 第 3

Day3 | 🌐 系統的全貌:從使用者到資料庫 (AP/DB/網路/環境簡介)

  • 分享至 

  • xImage
  •  

Day3 | 🌐 系統的全貌:從使用者到資料庫 (AP/DB/網路/環境簡介)

嗨,各位鐵人夥伴,前天了解完團隊夥伴後,我們就從一張最簡化的系統架構圖,來看看一個系統到底是如何運作的吧!

系統的全貌

以下是我親手畫的圖,目的在於讓新人秒懂,不追求精準,只求好懂!

下圖請不要考慮是部署在哪,也就是不要考慮圖中的內容”跑在哪“,否則很容易亂掉,部署的內容後續章節會提到

1. 極簡化的系統架構

https://ithelp.ithome.com.tw/upload/images/20250807/20177987FcTcr5sx68.png

  • Application 應用系統: 這是一個非常大的統稱。你打開網頁、APP,看到的所有畫面和功能,背後都是它在撐著。使用者主要透過網路(HTTP/HTTPS)來操作它,它負責了畫面呈現、商業邏輯運算等工作。
  • DB 資料庫(Database): 結構化資料的永久儲存區。你的使用者帳號、論壇文章、商品訂單等,這些有明確欄位和格式的資料,都會永久存放在這裡。開關機也不會遺失,通常也會有備份機制。

舉個例子:

使用者 A 透過某個論壇發文。當他在瀏覽器寫完文章並按下「送出」後,瀏覽器會把文章內容傳送給 ApplicationApplication 接收後,會先執行各種邏輯(例如檢查文章內容、確認使用者權限),然後把資料寫入 DB。當 DB 成功儲存後,會回傳成功訊息給 ApplicationApplication 再通知瀏覽器「發文成功!」,這才是一個完整的流程。

小提醒: 雖然有系統可能沒有資料庫,但那確實不是常見的樣態。大多數系統都會有資料庫來永久儲存結構化資料。

2. 常被忽略的檔案儲存層(Disk)

https://ithelp.ithome.com.tw/upload/images/20250807/20177987RIOdAAhlMe.png

我等後續也會忽略它,因為在畫比較大的架構圖時通常不會單獨去提。但新人一定要知道,永久儲存層除了資料庫外,還有檔案儲存空間(Disk)。

DB 負責存「結構化」的資料,那如果使用者上傳的是「非結構化」的資料呢?例如圖片、影片、文件檔。這些通常會存在 Disk 上。你甚至可以把日誌檔(Log)也想成是非結構化資料的一種,這些也通常會存放在 Disk 上。

3. 前端 vs 後端:廚師與服務生的故事 👩‍🍳

https://ithelp.ithome.com.tw/upload/images/20250807/201779877cUCho2QsH.png
我們剛剛說的 Application 其實是個大統稱,有些系統可以把程式碼分成兩包,也就是我們常聽到的「前後端分離」。

  • 前端(Frontend): 負責你看到的畫面呈現。舉例來說,論壇的發文框、按鈕、整個網頁排版,都是前端的功勞。
  • 後端(Backend): 負責處理商業邏輯。當你按下「送出」後,前端會把資料傳給後端,後端負責處理你的資料、驗證權限,然後把文章存入資料庫。

所以,是不是所有系統都是前後端分離呢?不一定!老舊一點的系統通常不會,這種架構有個專有名詞叫 Monolith(單體式架構)。但沒有絕對的好壞,這都取決於系統的架構設計和業務需求。

4. 批次處理(Batch):系統的「夜間清潔隊」

https://ithelp.ithome.com.tw/upload/images/20250807/201779871JOxG6F2JR.png
前面的例子都是使用者在操作時即時發生的。但其實一套系統有很多業務需求是不那麼要求即時性,且處理資料量可能比較大。這時候,批次處理就是你的好夥伴!

  • 批次負責批量運算,通常會由一個**排程器(Scheduler)**在固定的時間(例如每天凌晨、每週日)執行一連串的程式邏輯。
  • 它通常在離峰時間執行,以避免影響使用者體驗。
  • 舉例來說,系統要每天算出「本日最優秀文章」,就不需要使用者即時觸發。這時候,後端就會寫一個批次,在半夜去抓出當日所有文章,算出評分,然後更新到資料庫,這種情境就很適合用批次處理。
  • 批次其實也算後端的一種,甚至有可能在同一包程式裡面,這邊會拉出來講只是說明用

5. 資料庫也能寫邏輯?別懷疑!

如果你認為資料庫只能存資料,那可就大錯特錯了。資料庫裡面有個東西叫 Store Procedure,可以讓你直接在資料庫裡寫複雜的運算邏輯。
https://ithelp.ithome.com.tw/upload/images/20250807/201779876qmSfjWXoG.png

  • 優點: 減少後端和資料庫之間的網路傳輸,特別適合處理大量資料時,在資料庫內部算完再回傳結果,效率更高。
  • 缺點: 可能會有版控(Version Control)和綁定特定資料庫等問題。

那業界有在用嗎?當然有,而且絕對不少!會不會逐年變少不一定,但你身為新人,一定要知道它的存在。

6. 系統一點都不簡單,因為還有外部系統!

https://ithelp.ithome.com.tw/upload/images/20250807/20177987U06CwVQTSl.png
大型企業的系統,很少會獨立做完所有事情。**系統與系統之間的串接(Integration)**是非常常見的。

  • 舉例: 你在論壇發文要登入,常常會看到用 Google 帳號登入吧?這就是你的系統在串接 Google 的驗證系統。
  • 如果你在公司內部系統發文,那可能需要串接公司的 ADSSO 系統來做登入驗證。
  • 你電商網站的結帳功能,也是在跟外部的金流系統做串接。

外部系統是個大哉問,上面的圖只有兩個外部系統都算是極度簡化了,我們留待後續章節再來深入討論。


系統有分環境的

累了嗎?還沒完!大公司的系統大多數又會區分不同的環境(Environment)。這是在開發過程中非常重要的概念。

  • DEV (開發環境): 你的程式碼在開發階段,通常會先在你的本機電腦上執行。
  • SIT (系統整合測試): IT 開發完成後,會將程式碼部署到這個環境,進行跨部門的整合測試。
  • UAT (使用者驗收測試): 理論上是提供給業務單位(User)進行最後測試與確認的環境。
  • PROD (正式環境): 顧名思義,這就是給真實使用者使用的環境。你的一舉一動都可能影響到公司的營收,所以請務必小心、再小心!

補充: 不一定所有系統都會有這四個環境,有的會略過 UAT。這背後的原因有很多,可能是歷史因素、成本考量或人力配置,你不用太糾結,只要知道它們各自的功能就好。

---

今日鐵人精神:
今天我們從宏觀的角度看了一個系統的全貌。記住,一個系統並非孤立存在,它是由許多元件、邏輯和環境所組成的。理解這些基本架構,是你在 IT 世界闖蕩的第一步。
明天,我們會更深入探討資料庫的世界,明天見!


上一篇
Day2 | 🛡️ 甲方 IT 生態圈:認識團隊與資安紅線
下一篇
Day4 | 🎨 前端的畫面與後端的邏輯
系列文
前輩沒空教?你的第一份甲方IT三十天自學指南11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言