進度條

為什麼熟悉Amazon AWS總是高薪工程師的加分條件? 深入淺出的AWS服務教學介紹。

爆炸多選項、對於新手來說極端不友善的AWS,它是有什麼魔力在裡面?

作者: 縱裕 更新日期:

如果開始翻閱各大人力銀行的網路方面的工程師職缺,總是會發現很多高薪工作都會説會Amazon AWS是一個加分。但是你知道嗎?如果沒有AWS需求,工作內容也不會間接碰到AWS,也沒有GCP或是Azure需求的工作,多半薪水都不會高到哪去。

(不過如果工作本身跟網站部署沒關係,是有可能不要求會AWS,因為可以進去再學)。

 

這麼說當然是有點武斷,不過如果從根本面來看的話,是可以很容易推論出來的。AWS 與其他雲端主機最大的優點就是可擴展性(scalability)。如果你的公司業務發展快速,或是即將發展快速。最怕的就是程式跟不上發展,或是硬體規格跟不上發展。像是做電商最怕的就是做活動都幾十萬元一個月廣告費灑下去了,結果網站掛掉、伺服器(Server)掛掉(就算是手機APP後面也要一台伺服器),錯過讓顧客剁手的黃金銷售時間,多漚啊!

 

如果用雲端主機的話,只要架構架的對,碰到突如其來的大量流量也可以自動長出新的伺服器去分擔流量。先不論真實情況有沒有優化的空間,至少網站不會即時被打掛而喪失訂單,讓工程團隊有時間去研究就已經是莫大的好處了。

 

 

 

 

這也是為什麼我們在最前面的時候提到高薪的工作多半都會跟AWS扯上關係。高薪有個常見的必要條件就是公司賺錢,畢竟老闆有賺才會願意分出來,或是老闆預期有賺錢,所以工程費用是必要的支出。而在企業級的雲端服務中,Amazon AWS就是龍頭角色(沒有之一)。如果公司產品即使為了穩定性卻認為依然不值得使用AWS 的服務的話,那可能是

 

 

1. 技術層級不高 ,例如文章類型網站,以靜態頁面為主。

2. 產品不賺錢,使用AWS的花費對營收來說也是不能忽略的要素。

3. 產品比較敏感或是老闆比較多疑,認為必須放在自家Server才安全。

 

 

第3點是比較不能說他有問題的點,因為確實可能有些資安的疑慮,比方說Google曾經把Gmail內容【非針對】的拿去訓練廣告服務,或是擔心中國大陸的阿里雲會有政治監控問題。

 

 

 

但是可以這樣說,對於那些跨國雲端公司而言,一般可以讓老闆買跑車、住別墅等級的生意,其實也只是九牛一毛而已,真的有興趣到不席一切代價即使嚴重影響商譽的可能性極小,他任何的一個服務都遠賺的比你的服務多。

 

 

另外兩個原因對於工程師職涯發展不利,所以如果產品本身技術含量不高,或是老闆整天異想天開做些不賺錢的服務,那還是趕快考慮後路會比較好,時間不等人的。當你的同齡人都跳幾個工作達年薪百萬的時候,你還在年薪不到70,後悔就來不及了。(之後我們會有文章用比較有系統的方式來告訴你薪水是怎麼算出來的,你就會知道這樣工作了5 ~ 6年以上這樣的薪水真的不行。)

 

 

講了這麼多還沒開始介紹AWS的服務,那我們接下來就用列表的方式一個一個簡介吧!

 

 

 

 

(以下依照 Linux雲端伺服器,用AWS暸解Apache與Nginx 課程 AWS章節順序介紹)

 

1.  Amazon EC2 (官網介紹)

全名為 Amazon Elastic Compute Cloud,除去Amazon這個公司名稱後縮寫會是ECC,把兩個C改成 C2 就會變成 EC2。直譯為 Elastic(彈性) Compute(運算) Cloud(雲端),而每個EC2 官方使用的單位是instance(實例),所以應該是彈性雲端運算實例。但大多數時候都直稱EC2,算是最常被使用的AWS 中心服務之一。

 

如果單獨使用它,他就像是一個VPS一樣,要先選硬體規格與資源。但是是以小時計費,如果關掉它就不會算錢,但不表示除了運算實例以外的部分不算錢。比方說硬碟空間就是可以額外加錢增加,固定連外IP如果閒置下來也是要負額外的費用。但是這些如果考慮得宜其實也不盡然會被徵收費用。

 

 

2. Amazon VPC (官方介紹)

全名為 Amazon Virtual Private Cloud,這個比較少直接看到文章解釋該怎麼用。因為它多半會在使用其他服務的時候順便設定。直譯翻譯的話接近Virtual(虛擬) Private(私有) Cloud(雲)。

 

要了解「私有雲」這個服務必須對網路有一點概念。不曉得大家有沒有用過區域網路,例如公司或是學校宿舍。先不論無線傳輸(雖然概念一樣,但是抽象上比較難理解),如果兩台電腦在「斷網」的情況下要互相連接,基本上就是要有實體線對聯。網路的概念就是 A 連到 B 連到 C 連到 D,然後ABCD電腦透過這些線路彼此之間可以互相看得到。前面提到的「斷網」在台灣其實就是指ABCD電腦彼此之間雖然看得到彼此,卻看不到中華電信的主機,因為沒有實體線路連接過去。那我們就可以稱這個ABCD網路為區域網路,是這幾台電腦私自擁用的網路。

 

那私有網路有時麼好處呢? 主要就是可以防範被攻擊,有資安上面的益處。外部電腦要攻擊你首先第一件事情就是要找的到你的電腦。如果他根本就無法連線,那也無從攻擊。所以即使是現在,也常常聽到MySQL的3306 port 有零時漏洞被掃瞄。但是如果這個port如果只有在私有雲上面的主機才看得到的話,即使他有天大的漏洞也相對安全,就像是你把錢包放在你家沒上鎖的你的房間裡面。小偷還是要通過你家大門才有可能觸碰到這個房間。

 

那你會說不能連網怎麼服務客戶?答案當然是至少某一台主機必須要開啟對外的功能。然後在一開始只要針對這個門口進行防護就好了(例如大樓一樓可以安插個管理員的概念)。所以如果你只有一台EC2沒有使用其他的服務的話,那就會感覺不出來這個功能有何用處。但如果分散式架構架設出來的話,就可以很明顯地感覺到了。

 

Private Network這個概念其實Linode也有,只是AWS很厲害的可以讓你同時設定擁有很多組虛擬雲,並且訪問的權限是可以個別設定的。

 

 

3. Amazon S3 (官方介紹)

全名為 Simple Storage Service,縮寫就是三個大寫的S,所以稱為S3。直譯翻譯的話接近Simple(簡單) Storage(儲存) Service(服務)。常見的用法就是當成圖片的外部圖床空間或是檔案,也有聽說有些人會直接配合Amazon Cloudfront 服務製作成靜態網站(比較少見),也有人拿來當作線上影片服務的儲存空間。

 

S3 大概是除了EC2之外比較常見的使用AWS的原因,通常在圖文網站中都會有圖床(專門放圖的可對外傳輸空間)的需求,這是因為Web Server一次能處理的訪問數是有限的,而圖片、影片、檔案比起HTML文字檔總是大的許多,而且其實不需要使用到後端程式去處理,所以如果放在外部的伺服器可以有效的降低主要伺服器的負載。依照網站性質,就算優化了100倍也是有可能的。而S3就是那個可對外傳輸資料的伺服器空間。

 

不過S3也有私有雲的概念,所以他除了可以被公開存取外,也可以只被內部存取。S3使用起來跟一般的網路空間沒太大的差異,除了它的根目錄被稱作Bucket(籃子),並且需要為他命名一個獨特的名稱,全世界都不能相同,因為他會對應到外部的URL網址,總不可能不同的使用者用同樣的URL網址互相干擾吧!

 

講到S3的話就一定需要講到API的功能,因為通常都是先上傳圖片到自己網站後再轉傳到S3上去。所以一定要有API End Point不然無法自動化。不過這段不算困難,Amazon也已經做了SDK讓大家使用,例如PHP版本Ruby版本

 

 

4. Amazon RDS (官方介紹)

全名為Amazon Relational Database Service,拿掉Amazon再取大寫就是RDS。從Relational Database就可以直接看得出來他是跟關聯性資料庫有關。直譯翻譯的話接近Relational(關聯性) Database(資料庫) Service(服務)。

 

如果是純使用Linode等VPS的服務,如果想要把資料庫與主程式分開,你必須要多新增一個主機,然後自己在裡面安裝MySQL或是PostgreSQL,並且關於「資料庫備份快照」等功能也必須要自己用Crontab去處理,並且還要找儲存備份的空間。在AWS裡面完全不用,你不用擔心MySQL在安裝的時候的設定,你也不用去想如果被Hack的話怎麼辦。基本上安全性都是由Amazon去處理,而且你還有虛擬私有雲的概念。也不用擔心備份會不會有問題,因為備份的快照服務是RDS的內建功能,要複製出一個一樣的資料庫也是1分鐘以內的事情。儲存空間則是可以選擇直接存在S3裡面(可以設成外部無法訪問)。

 

RDS服務主要有6個資料庫種類可以選擇,除了常見的MySQL、PostgreSQL、MariaDB,也有大型商業公司常用的Orcle與微軟旗下的MSSQL。當然Amazon也很喜歡用自己的規格綁架使用者,所以製作出了Amazon Aurora這個與MySQL共容的資料庫。但是目前來說沒有特別推薦Aurora(不喜歡被綁架)。

 

 

5. Amazon SES (官方介紹)

全名為 Amazon Simple Email Service,拿掉Amazon再取大寫就是SES,主要是寄送Email信的服務。直譯翻譯的話接近Simple(簡單) Email(電子郵件) Service(服務)。

 

這個服務是免費的,每天可以寄送五萬封Email,以數字上來講是很可觀的。一般的Email寄送服務免費額度到1萬就已經非常多了。Amazon給到五萬是很難用的完的一個數量,如果各位有在用Gmail的話,Gmail一天的上限大概是500左右。

 

如果有要使用這個服務,第一件事是需要自己的網址網域,並且在DNS上面輸入一些驗證用的紀錄(Record)。不過有兩個缺點,一個是寄送IP位置與其他使用者是共用的。因此如果對象網站有依照IP來封鎖Email寄送的話,那就很麻煩,信會寄不出去。聽說有些Email服務會有這個問題,這時就要付費購買IP Address了。

 

另一個問題是收信問題,如果是直接使用的話,其實無法讀取Email。 只能存在S3裡面管理,並沒有人類看得懂的介面。當然,再加上一些其他的服務就可以避開這個問題。但整體還說是相當不方便的!

 

 

6. Amazon SNS (官方介紹)

全名為 Amazon Simple Notification Service,拿掉Amazon再取大寫就是SNS,直譯翻譯的話接近Simple(簡單) Notification(通知) Service(服務)。

 

這個服務也是常存在各種服務之中。主要去監聽系統活動,並且發送通知訊息。這服務有兩個比較明顯的概念,第一個就是通知使用者,比方說寄送Email通知某個S3 bucket增加了東西,或是寄送簡訊。

 

另外一個是驅動其他程式。AWS裡面有很多服務都是需要被驅動的,這時候就可以把接收器跟目標服務綁定再一起,當SNS發生的時候,就會執行目標服務。算是在全自動服務中相當重要的糨糊型功能。

 

 

。。。剩下的功能因為課程還沒有講到,所以之後再繼續補充喔!

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Medium picture

縱裕

錄課程錄到快死掉了啊!!!