Day23 - 關於伺服器

關於伺服器

前言

我們介紹了許多知識點,並且也將爬蟲整合進去 Discord Bot 中,但是實際上來講我們不可能都用本地端來啟動 Discord Bot,所以接下來將會來介紹一些關於伺服器與主機的知識點,所以這一篇會相對比較簡單,也算是讓腦袋放鬆一下。

何謂伺服器

其實我們在使用的許多服務,都有使用到伺服器,例如:Google、Facebook、Instagram、X(原:Twitter) 等等,這些都是使用伺服器來提供服務的,如果真的要簡單一句話來解釋的話…

「伺服器就是一台電腦。」

恩?那這樣子與我們家用電腦有什麼差異呢?其實差異可大的了,通常你在家用電腦時,基本上沒用就會關機,但是伺服器就不一樣了,它必須要 24(小時)x 7(天)全天候運作,而且伺服器的硬體規格通常都比較好,因為它需要承擔更多的工作量。

而伺服器常常會有一點混淆,因為必須區分為兩種

  • 硬體伺服器
  • 軟體伺服器

雖然基本上都統稱伺服器,但實際上還是有點容易混淆的。

硬體伺服器

那麼我們先來講講硬體伺服器,通常硬體伺服器會涵括作業系統,而硬體伺服器比較容易理解一點,畢竟就跟你的家用型電腦非常雷同,只是硬體規格會比你的家用電腦較好。

雖然你可能會說你的家用電腦規格也不差,那為什麼還會輸給伺服器呢?

其主要原因是用途不同,家用電腦的主要用途比較偏向個人用途,例如:玩遊戲、媒體播放、網頁瀏覽等,因此家用電腦會比較注重於顯示卡與記憶體,因此對於圖形處理與記憶體的需求會比較高。

相反的,伺服器的面向則是比較偏向多人使用,例如:Google、Facebook、Instagram、X(原:Twitter) 等等,因此伺服器比較需要較強大的 CPU 與硬碟,因為它需要承擔更多的工作量以及儲存更多的資料。

而且家用電腦的作業系統大多是搭配 Windows、MacOS 等等,但伺服器的作業系統就不太一樣了,可能是 Windows Server、Ubuntu Server、CentOS 等等,因此伺服器的作業系統也是有所不同的,但大多家用電腦的作業系統都是 Windows、MacOS。

雖然家用電腦與伺服器兩者之間有非常相似之處,但實際上來講,兩者的設計目的是不同的。

Note
硬體伺服器的外型基本上有四種,例如:機架式、塔式、刀鋒式、機櫃式等等,但這邊就不多做介紹了,有興趣的話可以自行去查詢看看。

軟體伺服器

軟體伺服器是指該伺服器上所執行的軟體,隨著軟體的不同,伺服器的用途也會跟著不同,因此軟體伺服器可能有以下幾種

  • 網頁伺服器
  • 檔案伺服器
  • 郵件伺服器
  • 資料庫伺服器
  • 應用程式伺服器
  • 代理伺服器

…等等。

而軟體伺服器的運作方式也會有所不同,例如:網頁伺服器會使用 HTTP 協定來傳輸資料,而郵件伺服器則會使用 SMTP 協定來傳輸資料,因此軟體伺服器的運作方式也會有所不同。

Node.js 與伺服器之間的關係

那麼為什麼我們要特別講到伺服器呢?其主要原因如同前言提到的,我們在前面章節所理解的知識點,都是在本地端執行,但是實務上來講,我們不可能都在本地端執行,因此我們會將 Node.js 部署至伺服器,並透過伺服器來執行我們的程式。

所以許多的服務都是透過伺服器來執行我們的程式,而這件事情也如同我們第一天所介紹的一樣…

「Node.js 是一款基於 V8 所製作出來的 JavaScript 執行環境,它可以讓我們使用 JavaScript 來開發、撰寫伺服器端的程式,也就是說 JavaScript 不再局限於瀏覽器上,而是可以在伺服器執行。」

因此才會特別拉出一篇來介紹伺服器,因為我們在後面章節會將 Node.js 部署至伺服器上,並且透過伺服器來執行我們的程式。

當然不可能叫你從頭弄一台伺服器,所以我們在下一篇會介紹使用一些雲端服務來部署我們的 Node.js 程式,所以我們就下一篇見囉~

Note
有時候我們專案還在開發中,僅僅只是要分享給他人看時,可能會使用一些服務,例如在自己的開發機上架設 Apache、Nginx 或是 Ngrok 來達到這個需求。