本文是為了解釋服務應用程式,如何從位於單一電腦上運作的執行環境,逐步演化成在容器化技術上執行應用程式的形式。本文並非以深入探討技術為目的,而是基於為並未具有資訊知識或背景,並初次接觸微服務讀者講述其演化與關係,故本文並非嚴謹的技術文檔。
在不違反易讀之前提下,本文將盡量提供專有名詞,以供感興趣的讀者能有關鍵字進行查閱。若需要對相關技術進行深入了解,建議利用本文所提供之專有名詞至官網查閱,希望初入資訊領域之讀者,可以養成依照官網文檔為資料基準,佐以其餘文章輔助理解的良好習慣。
以上,若本文有誤,敬請勘誤指正,若於其他地方查閱與本文所敘述之內容不符,一切請以提供機構之官方文檔為主。
感謝諸位閱讀前言,敬祝閱讀愉快。
首先在說明軟體服務以前,我們需要事先定義所謂的『電腦』是什麼?
不算太精密地去說明,在現代,舉凡符合『馮紐曼架構』的機器,都應該可以被稱為電腦。
因應用途而在實現上有所不同,但舉凡從超級電腦到微電腦,現代運行的電腦設備,都是符合馮紐曼架構的機器。反過來說,只要符合馮紐曼架構的設備,無論它在商業上有什麼稱謂 (智慧電視、智慧手錶、智能手機),都應當符合電腦的定義。
當然,除了馮紐曼架構以外,還有很多的架構,但這並不是這裏討論的範疇。
在馮紐曼式的電腦中,電腦被分成了五大單元,分別稱作:
1. 控制器(中央處理器 CPU)
2. 運算器(中央處理器 CPU)
3. 儲存器(記憶體 Memory)
4. 輸入設備(Input)
5. 輸出設備(Output)
至於我們會用『電腦』這種概念的設備去進行什麼工作呢?
縱使經過眼花撩亂的應用包裝,我們使用電腦的過程,不外乎就是進行三件事:
1. 輸入
2. 計算
3. 輸出
嗯,聽君一席話,如聽一席話。
這聽起來很像廢話,但是追溯起來還真的就是這樣,只是做這件事的規模很大,所以看起來會像是魔法。
假設你有去自行組裝過電腦的經驗,就會知道現代電腦的最小開機要求,會需要以下零件:
1. 電源供應器 (Power):把市電 (110V、220V) 轉成電腦零件的用電 (12V、5V、3.3V),台達或是海盜船的主力業務在這個位置。
2. 主機板 (Motherboard):把所有零件串起來的位置,包含 USB 晶片,網路晶片,I/O接口,和其他零件的接口等等,華碩、微星與技嘉的主力業務在這個位置。
3. 中央處理器 (CPU):馮紐曼結構中的控制器及運算器,Intel 跟 AMD 與高通的主力業務在這個位置。新聞常講什麼 Arm 或是 x86,發燒友常講什麼 K 處理器或是超頻,都是在說這裡。另外嚴格來說蘋果的 M 晶片不等於 CPU。
4. 記憶體 (Memory):馮紐曼結構的儲存器,美光或是金士頓的主力業務在這個位置。
有要組電腦或是買股票的同學可以參考,當然這不是裝機或選股指南。
除了上述的零件以外,剩下的零件都不是必要的。
沒有鍵盤滑鼠跟螢幕可以開機,沒有聲卡可以開機,沒有 Wifi 卡可以開機。
沒有顯示卡 (GPU,Nvidia 的主力業務在這個位置) 也可以開機 (雖然說有些主機板會鎖無顯卡又無內顯的配置)。
甚至沒有硬碟 (Disk,Seagate 和 WD 的主力業務在這個位置) 也同樣可以開機 (同樣的,有些主機板會鎖無硬碟狀態,但自行組電腦必須要有硬碟才可以裝作業系統 (OS,Microsoft 的主力業務在這個位置)就是了,所以實務面來說,硬碟算是必備的)。
當然沒有機殼 (Case,迎廣或曜越的主力業務在這個位置) 也可以用鐵絲充當開關跳線開機。
就這樣,我們建立一台了可以計算、輸入跟輸出的機器了。
接下來就可以談輸入跟輸出。
輸入這件事,最直觀的就是用鍵盤或滑鼠、用觸控螢幕或是麥克風、視訊頭、指紋感測器、溫溼度感測器或紅外線感測器等等,或是從硬碟讀取資料,這些都算是輸入的一環。
輸出則是可以粗略分成『取得結果』和『保存結果』這兩個目的,打印到螢幕上,撥放到耳機裏,傳出震動,發動引擎,將資料寫入硬碟內,都是算輸出的一種。
而輸入輸出都可以透過『網路』來進行。
所謂的『網路』,指的就是設備跟設備間的溝通方式。
『人類』跟『設備』只能透過按鍵與視覺聽覺或是觸覺來做互動,而設備跟設備間彼此會通過網路通訊來做溝通,從藍芽到一般的 RJ-45 網路孔與無線 Wi-Fi 都可以是介質,這些東西都是設備跟設備間的溝通方式。
輸入跟輸出這件事,不見得是人跟設備的互動,也可能是設備跟設備的互動;事實上,設備跟設備的互動應該會比人跟設備的互動更多。
也就是會變成這個形式:
人 <-螢幕與鍵盤等等-> 【客戶端設備】 <-網路或藍芽等等-> 【伺服端設備】
在這種時候。
做輸入的設備就會稱為『客戶端 (Client)』。
等待輸入並回饋輸出的設備,就會稱做『伺服器 (Server)』。