AWSomeDay | 台北 2017的心得與重點整理

George Chang
Aug 26, 2017 · 10 min read

心得分享

在8/23參加了AWS舉辦的AWSomeDay | 台北2017 活動,認識了AWS上的各種雲端服務。這場研討會的用意就是,介紹你如何用AWS上的各種服務(運算、網路、儲存與資料庫)來完成你的服務平台,無論是網站或者APP。

因為前一家公司是做web hosting為本業,所以我在AWS上涉略就不深,參加研討會才知道原來以前使用過的架構只是在AWS上有不同稱呼,而且以前每台都是虛擬主機,需要花費大量的時間去維護,在AWS上的區分不同的服務就是企業能省去維護主機的成本,專注在實現業務邏輯上。

另外我想舉辦這樣一場免費的研討會,看似是很大的開銷,但隨之帶來的效益應該是很大的,針對最準確的目標客群去行銷,讓這群人了解AWS上各式各樣的服務與應用場景,而且我覺得以他們安排的議題在一天的議程介紹挺剛好的,能夠用一個綜觀的角度去了解各個基礎設施。

最後我會說這是我目前參加過所有的研討會,講師表現最佳的一場會議,無論是台風、口條、解釋的用語、隨機應變能力以及對於時間的掌握都是一流的。

重點整理

Regions & Availability Zones

在租用AWS時有不同的地區可以選擇,而不同的地區就代表AWS在當地有建立資料中心,一般我們會選擇距離服務對象較近的地區,或者用成本考量選擇單價較便宜的地區,而不同的地區至少會有兩座可用區域,這個可用區域的意思就是AWS在該地區有建立多少的資料中心群集。所以在需要做水平擴展及即時備份時,AWS會自動將主機放在不同的可用區域上,也就是不會把資料放在同個籃子內。

Elastic Cloud Compute(EC2)

這個就是AWS的基礎服務,也就是在AWS租用虛擬主機(VM),目前支援Linux與Windows。號稱是3分鐘就可以開好一台VM,事實上也是。另一個特色是可以隨著需求調整機器的效能。

而EC2有針對不同的需求提供各種類型的方案,簡報也直接列出在什麼使用情況下建議選擇的方案:

Instance Metadata & UserData

A. Metadata

AWS也提供一個URL能直接在主機上列出該主機的資訊

$ curl http://169.254.169.254/latest/meta-data/
ami-id
ami-launch-index
ami-manifest-path
block-device-mapping/
hostname
iam/
instance-action
instance-id
instance-type
local-hostname
local-ipv4
mac
metrics/
network/
placement/
profile
public-hostname
public-ipv4
public-keys/
reservation-id
security-groups
services/

上面範例就是使用curl去從URL去取得metadata。

B. User Data

User Data的用途則是可以存在一份shell script,就能在主機第一次啟動時去執行任務,例如:

#!/bin/sh
yum -y update
yum -y install nginx
/etc/init.d/nginx start

就會在第一次啟動主機時升級yum套件、安裝與啟動nginx。

同樣的也能在主機查詢User Data:

$ curl http://169.254.169.254/latest/user-data/

Virtual Private Cloud(VPC)

從命名上就可看出這個服務是用來做內部與外部的網路配置,例如架設網站時只需要將web server的主機對外公開,至於app server或db server就只需要用內部網路來溝通,另外也支援VPN與公司自有的主機連線。

Simple Storage Service(S3)

AWS的雲端儲存服務,用來儲存靜態資源與備份資料,並提供web api讓開發者能撰寫程式去存取S3,在安全性上也支援SSL(https)傳輸。

架構為Account-> Bucket(up to 100) -> Object(file)。

S3 Versioning

在S3可以開啟Versioning的服務,也就是當檔案有異動 — 例如複寫或刪除時,並不會真的直接改變檔案,而是加上新版本的方式去紀錄變更,不過隨之帶來的問題就是會消耗更多儲存空間(成本)。

S3 Object Lifecycle

在S3上共有三種類別與建議的使用方式:

  1. S3 Standard — 用來存放一般常用的檔案。

在S3的後台可以設定時間,讓物件在超過多久之後自動轉移到開發者設置的類別。

Elastic Block Store(EBS)

這個服務是提供EC2的永久性儲存空間,簡單的說就是加購硬碟的概念,因為在EC2上的儲存空間會在主機stop/start後就消失,因此EC2的local store只建議存放暫時性的資料或者可以重新生成/取得的資料,而需要保持永久的資了當然就需要租用EBS服務。

EBS有SSD與HDD可選擇,差異自然就是IOPS效能、容量與價格上的考量。

並且可以製作snapshot備份資料到S3。

Security —Security Group、Authentication & Authorization — IAM

A. Security Group

AWS的防火牆機制,也就是藉由Security Group規則去套用該主機的網路區端是否要開啟。

B. Identity and Access Management(IAM)

AWS服務的使用者與權限管理,負責驗證與授權。可以藉由開設群組與使用者去限定團隊人員能夠操作的範圍。

比較特別的是IAM Roles,這跟功能跟建立IAM User差不多,但主要是給臨時需要存取公司AWS服務的人。

Database(DynamoDB、RDS)

到了介紹AWS資料庫服務的時候,AWS上有兩種資料庫類型

  1. NoSQL — 在AWS上稱作DynamoDB,是Key-Value DB,沒有固定的schema,根據特性適合作水平擴展,將資料分布在不同服務器上,再根據hash去找尋資料。

RDS Backups Work & Snapshots

在RDS上可以自動根據transaction log去備份資料庫,或者手動建立snapshot完整備份資料庫到S3,而RDS的snapshot會自動跨地區(region)儲存。

Multi-AZ RDS Deployment

這是AWS上的DB Replication服務,使用Master — Standby(Slave)架構,AWS會自動將Standby存放在與Master不同的Availability Zone(AZ),並且支援failover故障轉移,當Master故障後會自動切換到Standby,並將Standby視為新的Master,然後會啟動另一個新的Standby。

Scaling

Elastic Load Balancing

AWS的負載平衡服務,也就是自動分配請求給多台EC2分散流量,並且提供Health Check進行狀況檢查,在AWS上有兩種類型的負載平衡:

A. Classic Load Balancer

傳統的負載平衡器,可以根據所需加入/移除EC2 instance去調整效能,會有一個TCP/SSL listener去控制分發請求到註冊的EC2 instance上。

B. Application Load Balancer

建立在應用層的負載平衡器,所以可以支援進階的路由設定,例如根據請求的內容、HTTP Header的Host欄位或URL路徑等等的規則去對應到Target Group,再分配到該Target Group註冊的Target(EC2 instance),而一個Target還支援綁定到多個Target Group上。

Monitoring — CloudWatch

AWS的資源監控服務,可以查看各個服務的統計與圖表分析,並且藉由CloudWatch Alarm去設定在資源到達臨界值時寄信通知管理者(SNS Email Notification)以及Auto Scaling。

Auto Scaling

AWS的自動擴展服務(Scale out & Scale in),使用自動擴展有以下三個優點:

  1. 系統的容錯率更高:Auto Scaling會去檢測EC2 instance的健康狀況,如果遇到非健康的服務器,AWS的作法是直接將該服務器關閉,另起一個新的服務器來使用。另外也支援Multi AZ,在原本的AZ無法運作時,一樣會在別的AZ另起一個新的服務器。

而實作上Auto Scaling藉由:

  • Launch Configurations — 提供Scaling group一個模版,也就是告訴Scaling group當需要Scale out的時候如何去開一個EC2 instance。

Dynamic Scaling

藉由上面所提到的CloudWatch去設定Scaling policy來定義scale out & scale in的規則。

DynamoDB auto scaling

AWS新推出的服務,可以自動擴展DynamoDB的容量,也可以透過CLI及API擴展,當應用程式捕捉到相對應的Error時,便可以使用SDK去擴展容量。

Certificate

在參加完課程後會頒發出席證明,當然出席證明只代表你有參加課程,不保證你學習了什麼,最主要還是真的有藉由這樣的課程帶領入門去更深入了解AWS的服務及應用場景。

origino

A Technical Organization in Taiwan

)

George Chang

Written by

Software Engineer

origino

origino

A Technical Organization in Taiwan

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade