前幾天講到 LINE 的時候,我們知道一則訊息送出去之後,並不是直接從我的手機跑到朋友的手機,而是會經過網路和伺服器
那我突然想到一個問題
我們平常放在 Instagram、Google Photos 或其他 App 裡面的照片,到底是放在哪裡?
例如我今天用手機拍了一張照片,然後上傳到 Instagram
上傳完成之後,我就算把手機關機,過幾天再打開 Instagram,還是可以看到那張照片
甚至換一支手機登入帳號,照片也還是在
那這張照片到底放在哪裡?
難道它一直存在我的手機裡嗎?
一、照片真的沒有一直放在我的手機裡
其實如果我們把照片上傳到 Instagram 之類的服務,照片就不只是存在自己的手機裡了
可以先簡單想成
手機 → 網路 → Instagram 的伺服器
當我們按下上傳之後,照片會透過網路傳送到服務背後的系統
之後我們再打開 Instagram 時,App 就可以向伺服器取得相關資料,讓我們看到之前上傳的照片
所以就算把原本那支手機換掉,只要重新登入帳號,通常還是可以看到自己的內容
二、那伺服器到底在哪裡?
這裡就是我以前最容易搞不懂的地方
我們常常會說照片保存在雲端裡
但雲端到底在哪裡?
它不是漂浮在天空上的東西 😂
所謂的雲端,本質上還是存在實體的電腦和儲存設備裡
這些設備通常會放在專門的資料中心
所以可以把它想成很多實體的電腦和儲存設備,透過網路提供服務
三、資料中心到底是什麼?
資料中心可以想像成一個非常大的地方
裡面放著大量的伺服器、儲存設備和網路設備
這些設備會一起負責處理我們每天使用的各種服務
例如
所以我們每天滑 Instagram 的時候
看起來只是拿著手機一直往下滑
但背後其實有很多設備正在工作
四、為什麼不能全部放在一台電腦裡?
如果 Instagram 把全世界所有使用者的照片都放在同一台電腦裡
光是想像就覺得很可怕 😂
因為 Instagram 有非常大量的使用者,也會產生非常大量的照片和影片
一台電腦很難負擔這麼龐大的資料量和使用需求
所以大型服務通常會使用很多台伺服器和儲存設備一起工作
資料也可能分散在不同的設備和資料中心
這樣除了可以處理大量資料,也能降低單一設備發生問題時造成的影響
五、那我每次打開 Instagram,照片都會重新下載嗎?
某種程度上可以這樣理解
當我們滑 Instagram 的時候,App 需要從相關服務取得我們要看的內容
例如我滑到一張以前沒看過的照片
App 就可能需要透過網路取得相關資料,然後顯示在手機上
所以我們會覺得照片好像一直都在手機裡
但其實很多內容是透過網路即時取得的
而且為了讓我們滑起來更順,App 也可能會在手機上暫時保存一些資料
這樣下一次看到相同內容時,就不一定每次都要重新下載
六、那如果沒有網路呢?
這時候就比較容易發現雲端服務的特性了
如果手機完全沒有網路
有些原本存在雲端上的內容就可能沒辦法正常取得
所以我們平常會覺得我的照片就在手機裡啊
但實際上要看這張照片到底是存在手機本機,還是存在雲端服務裡
有時候兩邊甚至都可能有一份
七、心得
以前我聽到雲端這兩個字,真的會覺得有點抽象
總覺得資料就是神奇地放在某個看不到的地方
但今天把它拆開之後就比較好理解了
所謂的雲端,其實還是建立在很多實體設備上
只是這些設備不是放在我們自己家裡,而是由服務提供者管理
所以當我今天把照片上傳到 Instagram 時
其實就是把資料透過網路傳到背後的系統
下次再看到雲端儲存這幾個字
我可以明確知道它是什麼了!
⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯⋯
明日預告
今天知道照片可以放在雲端之後
下一個問題就來了
那這些資料到底是怎麼被管理的?
如果 Instagram 裡面有幾十億筆資料
它到底要怎麼找到我的照片?
下一篇就來認識一個非常重要的東西
Database 資料庫 🗄️