架構篇
軟體的基本面向
- 運算: Queue、Pub/Sub、Socket 等等模型
- 權限:帳號密碼、加密等等
- 交付:Web、App、桌面軟體、API 等等
- 資料與儲存:
- 資料:通常是動態資料,例如 JSON檔案,裡面的內容會常常變更
- 儲存:通常是靜態檔案,例如圖片、影片等等,比較不會去更動,通常會把靜態檔案的資料當作路徑傳給動態資料
- 資料庫:關聯式、非關聯式
進階面向
網路篇
這裡用從瀏覽器發送一個請求到伺服器的過程來解析網路的架構

- 瀏覽器:執行JavaScript, CSS, HTML的軟體,具有送出請求與接收請求的功能,例如按下一個URL
- Router(路由器):電腦送出的請求經過網路線先到路由器,再統一發出請求
- Proxy Server(代理伺服器):通常會在Router出去後先進到代理伺服器,可以用來做快取或是防止惡意攻擊等等
- DNS(網域名稱系統):把URL轉換成實際的位置(IP),有了IP位址之後,就可以進入到對應的server了
- Load Balancer(負載平衡器):顧名思義就是把導入server的流量做重新分配的角色,避免全部流量灌到同一台機器導致當機,DNS解析出來的位址可能就是 load balance的位置
- Port(埠號):同一台Server內要開啟很多服務的話,就可以開在不同Port,寫在URL的冒號後面,例如 1.1.1.1:3000 與 1.1.1.1:8000
- Reverse Proxy(反向代理):根據請求的內容來把他導倒這台server中的不同port,因為DNS只能解析到IP(機器),沒辦法解析到Port,所以當請求近來某機器時,就用Reverse Proxy來分配,也可以用來直接取用機器內的資源,例如檔案等