產品 / 專案進行中,經常會有 新功能需求
,有時候是來自老闆的突發奇想、或者市場反饋、或內部發想。這些資訊的流通,在組織內部是很重要的,畢竟大家要了解『需求』的來龍去脈之後,才能設計出有意義的功能,打到重點,否則會有越來越多溝通成本,所以 需求管理 (Requirements Management) 我覺得是件非常重要的事情。
不過現實跟理想總是有差距的。
產品 / 專案進行中,經常會有 新功能需求
,有時候是來自老闆的突發奇想、或者市場反饋、或內部發想。這些資訊的流通,在組織內部是很重要的,畢竟大家要了解『需求』的來龍去脈之後,才能設計出有意義的功能,打到重點,否則會有越來越多溝通成本,所以 需求管理 (Requirements Management) 我覺得是件非常重要的事情。
不過現實跟理想總是有差距的。
本篇整理 CloudWatch 常見問答。
這是個我心裡埋藏已久的問號: Service Using Single IP in Global
… 怎麼可能 @@?
但是看到 GCP 的文件說 “Global Load Balancing with Single Anycast IP“, 他是 Google ,所以我相信了 ….
心裡會這麼疑惑是因為很久以前在研究 ELB 原理 時,就一直在猜背後應該是靠 ASG + EC2 組出來的,然後每個 EC2 都有 EIP,所以 IP 不會是固定 …. bala bala … 認知上,實體的 Load Balancing 通常會是一台,但是通常也很貴。軟體的 LB 通常就是用 Auto Scaling 實作,而且很難跨地區。 ….
整理做系統效能測試的時候,如何利用 CloudWatch 作分析。
整理如何利用 CloudWatch 做 Log 分析。
本文整理 CloudWatch 最主要的應用:監控服務
與 告警系統
的建置。
CloudWatch 是學習 AWS 之後,除了 EC2、S3 之外,最重要的 Services 之一,本文整理 CloudWatch 主要的功能介紹。
整理 CloudWatch Metrics 的相關資料。
把 AP 的 Log 從機器送到 Log 服務,一直以來都是很重要的課題,這樣功能的角色稱為 Log Shipper。CloudWatch 提供的第一個版本的 Log Shipper 服務:awslogs
CloudWatch 是 AWS 的全託管 (Managed Service) 監控服務,在眾多 AWS 服務預設都會使用,了解他的基本概念與應用,在學習 AWS 服務中是相當重要的。
在 DevOps Taiwan Group 看到有人分享這篇文章:Microservice Prerequisites,其中的重點有三:
剛好最近工作上這些事都有關係,整理關於第一個 Rapid Provisioning
的心得。
Updated 2023/07/19: 本文收錄在個人著作 《SRE 實踐與開發平台指南》 - 2023/08 上市
整理 AWS 很重要的核心功能之一:EC2 Auto Scaling 筆記,這篇整理核心功能以及概念。
AWS 另一個類似發表於 2018/01/16 的服務叫做 AWS Auto Scaling 則是超集 (Superset) 整合服務,可以管理 EC2 Auto Scaling Groups、EC2 Spot Fleet Requests、ECS、DynamoDB、Auroa … 等服務。本文介紹的只是其中一個子集。
去年 2016 re:Invent 宣布 IPv6 的訊息,當時只有在 ohio region 可以使用,現在已經可以在全部的 region 還有相關的服務 GA 了!
Context Switch
中文翻譯成環境切換,wikipedia 的解釋:
是一個儲存和重建 CPU 的狀態 (內文),因此令多個進程 (process) 可以分享單一 CPU 資源的計算過程。
把它放在人身上,就是一心多用。Context Switch 的成本很大,五顆球同時丟給一個人,最後可能只接著一顆,也可能一顆都接不住。所以創造能「專注」的環境很重要,不管是在工作環境,還是個人的學習。
『五顆球同時丟給一個人』這段是出自 “Steve Jobs 自傳” 某一章,不過我找不到原始段落了,有找到的人麻煩跟我說,感激不盡!
Updated 2023/07/19: 本文部分收錄在個人著作 《SRE 實踐與開發平台指南》 - 2023/08 上市
Redmine 用 Ruby on Rail (RoR) 開發的專案管理、團隊協同合作、議題管理工具。
我一直很想把他帶入公司,因為覺得每家公司應該都有這樣的協作平台,他可以扮演組織內部重要的潤滑劑,同時減少 溝通成本。
不過在介紹 Redmine 之前,先整理一些問題:
最近在幫公司規劃 VPC,遇到以下的狀況與需求的組合:Cross Regions、Multiple VPCs、Multiple AWS Accounts、PCI DSS 的需求,另外畫了一個 VPC 給 Vault (保險櫃) 單獨使用,加上因為開發環境與正式環境的 AWS 帳號,形成相當複雜的環境。整理有以下要考慮:
AWS re:Invent 有個 Session 專門在說明這樣的需求:From One to Many: Evolving VPC Design (ARC302), Slideshare,整理一些重點:
AWS 終於支援 IPv6,目前只在新的 Region - Ohio (us-east-2) 可以使用。
在 IPv6 in the Cloud: Virtual Private Cloud Deep Dive (NET307), Slideshare 有詳細說明。整理一些筆記。
AWS 在 2015 年十月在 Blog 發表一篇標題:Are You Well-Architected?,描述怎樣是一個好的架構應該考慮的。文章標題引用知名傳奇吉他大師 Jimi Hendrix 的專輯標題 Are You Experienced?。這篇後來變成 AWS Well-Architected Framework 的源頭。
AWS Well-Architected Framework 以下簡解成 WA
EC2 Run Command 是用來執行遠端指令,管理 EC2 Instance、或者自己的 VM (on-primises) ,可以執行像是 Unix Scripts 和 Windows PowerShell 等。
SSM 全名是 Amazon EC2 Simple Systems Manager (SSM),主要就是用來控管 EC2 的代理程式,透過他可以自動化很多維運任務,常見的像是 Windows Update、SSM Agent Upgrade、Remote Script (bash or powershell),也可以做像是 CodeDeploy 的事情,然後用來做 CD。
EC2 Run Command & SSM Agent 不會另外收費。
感覺跟以前我在寫 Automation Test Framework 用的 STAF 概念類似,可以作為 Ops as Code
的底層架構。
我自己有好幾個 AWS Accounts 作為學習用途,但因為是自己的帳號,所以在 Security Groups
和 Billing
會特別管理。
我開了一台 EC2 Instance 在 Public Subnet,為了避免不必要的安全性問題,加上現在居住的環境不是固定 IP (每天都會變動),所以寫了一隻小程式,透過 Raspberry Pi
每天自動更新指定的 Security Group
,在安全與便利取得平衡。
將公司在 AWS 上的 NAT Instance 換成 NAT Gateway,事前評估、驗證、溝通與執行紀錄。
AWS 範圍很大,有系統的學習是必要的。就像以前學音樂一樣,從各個面向整理 學習地圖,試著拼這張圖,過程中就可以知道自己哪裡還有缺,把缺的補上 (擁有技能)、把圖拼出來 (擁有知識)、把他們連結 (Connected and Linked) 起來 (產生智慧)、用他們創造 (產生創意)。
底下這張 mindmap 則是我自己的分類、重要性、以及學習的進度狀況,用以看到全貌:
以下依照 AWS Services 的分類、Solution … 等,整理過去的心得筆記。
新聞來源:AWS CloudFormation Update – YAML, Cross-Stack References, Simplified Substitution
有三個很重大的更新:
!GetAtt
表示。ImportValue
function 參考其他 stack 的變數。被參照的 stack reference 就不能刪除。This is ${VarName}
的方式做字串取代。Fn:Join
做字串串接,Template 會變得很難閱讀。!Sub | "This is ${VarName}"
userdata
啟動 ec2 時,需要把整段 bash 放入,透過這個新的表示方式就很容易閱讀整理如何設定 git (github, bitbucket, gitlab) 與 Redmine Issue 整合.
這個目的是讓 commit 的東西跟 issue 做關聯性,可以讓相關人員知道到底改了些什麼?
這方法不需要另外安裝 Redmine Plugins, 設定分以下步驟:
有人在問 Lambda 抓取 S3 資料出現下載時間過大 (latency) 的問題,我做了這樣的假設:
推論基礎是:都在 LAN 裡的傳輸,會比出去到 WAN 還快。
以 AWS 來說,Lambda / S3 都是在 VPC 裡 (LAN) 的網路傳輸應該會比透過 WAN 去 S3 拿還好。不過找了 Lambda 對於 VPC / Network 官方文件的描述,都沒有提到類似的。
基於好奇心,做了以下的測試。
這張考試重點回到 Developer
,考試範圍除了 Solution Architect (ASA) / SysOps Administrator (ASOA) 都已經很熟悉的 VPC / EC2 / IAM / S3 … 等,另外的重點都在 DynamoDB / 3S (SQS, SES, SNS) / SWF / AWS API。
Updated 2018/06/05:AWS 已經發布新版的 Developer 版本,正在準備的人請注意。相關資訊也可以參考我整理的 這篇說明。
DynamoDB 設計理想源自於 Amazon 的論文: Dynamo: Amazon’s Highly Available Key-value Store, 2007,被稱為是 NoSQL 代表之作。
這篇由 Werner Vogels (AWS CTO) 寫的 Blog: Amazon DynamoDB – a Fast and Scalable NoSQL Database Service Designed for Internet Scale Applications,提到了 DynamoDB 背後設計的歷史、包含以前的 SimpleDB,文章提到幾個設計的重點:
Anyway,以下整理的是 DynamoDB 的重要概念、背後運作的原理。圖文資料都出自官方文件:DynamoDB Developer Guide 。 (有點像在翻譯練習 XD)
新聞來源:New – AWS Application Load Balancer
Application Load Balancers support content-based routing, and supports applications that run in containers. They support a pair of industry-standard protocols (WebSocket and HTTP/2) and also provide additional visibility into the health of the target instances and containers. Web sites and mobile apps, running in containers or on EC2 instances, will benefit from the use of Application Load Balancers.
整理一些利用 AWS CLI
作維運工作的例子,像是:
另外還有 AWS CLI
的使用心得,目的就是達到 Ops as Code
。
考完 Solutions Architect (以下簡稱 ASA) 之後,就開始準備考這張 SysOps Administrator
(以下簡稱 ASOA),主要因為現在主要的工作內容就是 System Operations / Administration
為主。
以下整理 Study 的摘要與心得。
Updated 2018/06/12:AWS 已經發布新版的 SysOps 版本,正在準備的人請注意 官方資訊 - SOA-C01 (PDF)。
整理 EC2 Instance Lifecycle 和常遇到的 Troubleshooting.
整理 AWS Security Groups
和 Network ACLs
的差異,特別是 rule 的 stateful
與 stateless
的差異。主要參考自下表:

AWS ELB 是利用 EC2 + Auto Scaling Group / Launch Configuration 實作的 (我猜的)。之前 觀察 Cloudtrail 更加應證此現象。而每一個 ELB 後面有多少台 EC2 可以從 ENI 的數量看得出來。但是 EC2 的數量卻跟 ELB 後面的 Backend 數量不成比例。整理觀察到的現象 …
利用 IAM Policy、以及 EC2 ResourceTag 限制權限,像是只有 DBA 可以針對 DB 機器做動作。不過搞了半天,踩了一個大雷 …. 整理以下 …