大家好,我是馬在飛的馬。
當你想要開發一個軟體服務時,除了知道打算滿足的需求外,還有一件事也是不可忽略的,那就是「主機服務」。主機服務就是我們一般說的infrastructure,是屬於基礎設施的準備,用來作為服務的載體,讓你的產品可以被使用。
如果你上Google查找主機服務,你會發現可以搜尋出各式各樣的主機服務商,對於軟體開發完全沒有概念的小白,如果有需要,要如何挑選合適的服務呢?今天我們就用淺白易懂的方式,來討論一下「主機」這個議題!
一定需要主機服務嗎?
主機是什麼?維基百科如此說道:
「主機(Server或稱伺服器)通常以網絡作為媒介,既可以通過內部網路對內提供服務,也可以通過網際網路對外提供服務。」
用人話來說,主機就是去串聯資料與服務的載體,通常一個產品,會有使用者操作的介面,透過使用者的使用取得的資訊,透過網路送給主機,主機上的服務去處理這些資料,並將結果回傳,有時主機也會把這些資料儲存起來,作為日後所用。
一張簡易的圖說明用戶端與Server,整個軟體服務不是只有我們看到的那一面而已
對於網站來說,一定要有主機去放網站的程式碼與內容,還要有「網域名稱」,才能讓使用者造訪並使用網站。至於APP,則不一定了,手機本身也可以作為服務的載體,使用者一但透過APP Store或Google Play把服務下載到手機上後,有一些資料的解析與處理,可以直接在手機本機上做處理,並且把資料儲存在手機上,這時就不一定需要有主機的存在,例如手機上的計算機,就是一個很好的「不需要主機」的例子,所有的計算邏輯,都在手機上處理完,並產出結果,不需要複雜的資料交換。
但若是沒有主機,就表示所有的資料都只能透過手機去取得並處理,能夠達成的功能也會因此受限,沒有主機的APP,無法有會員的功能,所有的資訊與參數也都只能從手機上取得,只要更換手機所有的資料也都消失了,以產品發展來說,也無法取得使用者的資訊與使用情況,作為產品未來規劃的參考。所以當你在構想一個產品時,要先想清楚這個產品的目的、需要處理的資料,以及未來方展的方向,來決定是否有建置主機的必要性喔!
自己架設實體主機或是使用雲端主機服務?
實體主機顧名思義,就是會有一個實際存在的主機,用來放置產品的服務,有一些企業會選擇實體主機的服務商,或者在自己的辦公室中放置實體主機,這是成本相對高的選擇。主機管理是一項非常精緻的工作,放置主機的主機室需要24小時不間斷地開者冷氣,避免主機過熱,而各種主機的架設、維護與汰舊,需要專業的MIS去處理,再者,實體主機一定要確保有相對應的備援措施,一但放置主機的地方發生斷電、火災、水災等,導致主機停止服務,那造成的服務暫停與資料損失的災難是不可小覷的。
實體主機雖然有這些管理上的成本,但畢竟是掌握在自己手中,一台主機可以放置多個產品服務; 當使用流量相當大時,可以自行去調教主機的效能,來支撐服務; 在資安管理上,也可以依據需求去加強、客製。一般來說,通常是確認服務有一定程度的大流量,並且有足夠的資源來支持養主機的成本的「大企業」,才會選擇自建實體主機,投報比才能達到平衡。
相對的,選擇雲端主機對企業來說管理成本就降低許多,雲端主機商會持有多台主機並放置於設備精良的主機房中,並由他們專業的MIS人員管理,一台主機可能切割成多個虛擬空間,提供給不同的產品服務,對企業來說,他只需要支付他所使用的主機服務,而不需要花費大量的金錢去維護「主機」設備本身。主機的備份與備援機制,也由主機服務商提供,企業只需要挑選合適自己的方案即可,因此對於新創的服務或是資源尚不是很充足的企業,選擇「雲端主機」就經濟實惠的多了。之後服務成熟了、企業成長了,使用的流量大,評估後改為自行管理實體主機比較划算時,只需要進行服務的搬移即可。
有點像選擇租車或買車:用量、預算有限時,租車就好。
有錢、用量大又有獨特的改車需求,那就買一台吧!
AWS雲端主機服務
「Google搜尋,主機服務商百百種,要怎麼挑選呢?」做軟體外包的這些年,常常遇到客戶問我這個問題,但其實對軟體外包商來說,客戶選擇哪一家主機服務商,對我們來說沒有太大的差別(笑),主機對我們來說,就是一個容器,只要提供需要的資訊,讓我們能進去部署就可以了,至於容器的規格與大小,則是客戶拿自己對產品的預估流量以及期待效能去和主機商溝通,再由專業的主機商協助規劃是最好的。
但經過這些年累積的經驗,若真要推薦一個主機服務,我會建議AWS的服務,在台灣的市場上,你可能會覺得沒聽過什麼AWS,但Amazon.com總聽過了吧!AWS(Amazon Web Services)是雅馬遜提供的網路服務,在國際間的雲端產業佔據領導地位,目前不論是微軟、Google Cloud、IBM提供的雲端主機服務都尚無法超越AWS,目前也有許多國際級的大企業是使用AWS服務,包含Netflix、西門子、麥當勞等,另外AWS也致力於服佐新創企業,像是Uber、Survey Cake都是靠AWS起家,其穩定度與優質的服務是無庸置疑的。
可口可樂改用AWS的服務後,節省了40%的營運成本
對熟悉AWS的工程師來說,AWS提供的服務多元、完善又好設定,一但用過就會上癮,但我們不能只貪圖工程師方便,也要從客戶的角度來說:AWS提供許多既有服務(包含會員、SMS/Email服務、推播、串流、資料庫…等等),當在預算、時程有限的情形下,使用AWS的服務,可以降低許多客製化的成本。再者,AWS的服務是採用「流量」計費的,而不像大部分的主機服務是採用月租制:一開始溝通好主機的規格,然後每月付出固定的成本。AWS提供的服務是依據產品的用量去隨時調整,並且大部分的服務都提供一部分的免費扣打,超過後才依據用量去收費,對於一開始還不知道流量會有多少的產品,或是資金有限的小企業都相當友善。如果是已經相當有規模的產品或企業,也可以和AWS談專屬的方案費用,無怪乎在國際間,不論新創或是大企業,AWS都如此受歡迎。
今天對於主機的入門說明就到這邊,希望當你遇到挑選主機的難題時,這篇文章可以給你一些參考的方向和啟發。如果你有相關經驗可以分享,歡迎留言並分享我們的文章,我們也很希望和更多人討論軟體專案開發和管理的經驗、想法!讓我們一起為了更好的未來努力!
------------
若你有軟體開發或專案管理的需求,請點擊此並留下你的需求,我們會盡快與你聯繫
你也可以在Medium上看到馬在飛的文章喔!前往Medium