Thinking, Coding, and Learning.

先生不知來自何方,亦不知歸去何處,年過而立,參悟生與死,淡泊名與利,但憂天下蒼生。蹤跡走紅塵,藏身山林田野,撫琴於搖滾,振筆於網路,傳道於教學;神遊金庸武俠,往返程式思考,常以此樂而忘眠。... 更多關於我

整理 CloudFormation 整理官方文件學習筆記,主要是 Template Anatomy (結構) 的整理。

Read More

Stages in Software Testing 2017-03-18 11:08:00

這幾年 DevOps 盛行,大家都在討論,然後都在喊要 CI 、要自動化測試 ….

我從 Software Developer, SQA, System Operation / Administrator 三種角色 / 職務都走過,做了幾年的 System Operation / Administrator 之後,最近開始有機會回到 Developer 身份,專注 Micro Service 與架構,反思測試的重要性感覺又更深刻。

How to be an SQA? 有過去經驗的分享。

整理一下過去做 SQA Manager 時的 Test Strategies (測試執行策略) 與心得。

Read More

Redmine Plugins and Themes 2017-03-18 08:45:00

整理一些不錯的 Redmine Plugins and Themes。

Read More

產品 / 專案進行中,經常會有 新功能需求,有時候是來自老闆的突發奇想、或者市場反饋、或內部發想。這些資訊的流通,在組織內部是很重要的,畢竟大家要了解『需求』的來龍去脈之後,才能設計出有意義的功能,打到重點,否則會有越來越多溝通成本,所以 需求管理 (Requirements Management) 我覺得是件非常重要的事情。

不過現實跟理想總是有差距的。

Read More

Service Using Single IP in Global 2017-03-05 12:20:00

這是個我心裡埋藏已久的問號: 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 通常就是用 AutoScaling 實作,而且很難跨地區。 ….

Read More

Study Notes - CloudWatch 2017-03-02 03:30:00

CloudWatch 是開始學習 AWS 之後,除了 EC2, S3 之外,最重要的 Services 之一,重要的功能如下:

  • CloudWatch Alarms
  • CloudWatch Events / Rules
  • CloudWatch Logs
  • CloudWatch Metric, Filter
  • CloudWatch Dashboard

常見的應用場景:

  • 系統資源的監控
  • Dashboard 系統訊息看板 (即時)
  • 自訂監控指標 (Metric)
  • 即時 Log 蒐集與儲存
  • Log 批次備份 (S3)

在還沒深度的研究之前,其實我對 CloudWatch 只是一知半解,大概只知道 CloudWatch Alarm + SNS …

深度 Study 過整個服務之後,發現這真的是不得了的東西,以下整理重要的基本概念。

Read More

Resource Provisioning and DevOps 2017-02-11 09:53:00

DevOps Taiwan Group 看到有人分享這篇文章:Microservice Prerequisites,其中的重點有三:

  • Rapid Provisioning
  • Basic Monitoring
  • Rapid Application Deployment

剛好最近工作上這些事都有關係,整理關於第一個 Rapid Provisioning 的心得。

Read More

整理 AWS 很重要的核心功能之一:Auto Scaling Group 學習筆記,這篇整理基本的概念以及重要的名詞。

Read More

去年 2016 re:Invent 宣布 IPv6 的訊息,當時只有在 ohio region 可以使用,現在已經可以在全部的 region 還有相關的服務 GA 了!

Read More

Cost in Context Switch 2017-01-23 03:21:00

Context Switch 中文翻譯成環境切換,wikipedia 的解釋:

是一個儲存和重建 CPU 的狀態 (內文),因此令多個進程 (process) 可以分享單一 CPU 資源的計算過程。

把它放在人身上,就是一心多用。Context Switch 的成本很大,五顆球同時丟給一個人,最後可能只接著一顆,也可能一顆都接不住。所以創造能「專注」的環境很重要,不管是在工作環境,還是個人的學習。

『五顆球同時丟給一個人』這段是出自 “Steve Jobs 自傳” 某一章,不過我找不到原始段落了,有找到的人麻煩跟我說,感激不盡!

Read More

寫在介紹 Redmine 之前 2017-01-21 08:45:00

RedmineRuby on Rail (RoR) 開發的專案管理、團隊協同合作、議題管理工具。

我一直很想把他帶入公司,因為覺得每家公司應該都有這樣的協作平台,他可以扮演組織內部重要的潤滑劑,同時減少 溝通成本

不過在介紹 Redmine 之前,先整理一些問題:

  • 專案管理是什麼?
  • 專案管理要呈現什麼?
  • 協同合作工具在團隊裡是阻力還是助力?
  • 有了這個工具能為組織帶來什麼好處?
Read More

最近在幫公司規劃 VPC,遇到以下的狀況與需求的組合:Cross Regions、Multiple VPCs、Multiple AWS Accounts、PCI DSS 的需求,另外畫了一個 VPC 給 Vault (保險櫃) 單獨使用,加上因為開發環境與正式環境的 AWS 帳號,形成相當複雜的環境。整理有以下要考慮:

  • VPC CIDR 的規劃
    • Multiple VPCs
    • VPC for PCI DSS Vault
    • 如果有其他 Cloud, e.g. Azure, GCP, 也要考慮
  • Routing, Connections, and Network Topologies:
    • VPC between different Region:BGP or Static Route
    • Site to Site VPN, including HA and Failover
    • VPC to On-Premises: VPN and Transit VPC
    • VPC to VPC: VPC Peering
    • Routing Policy
  • 控管問題: Network ACL 以及 Security Group 的規範
    • 異動管理 (Change Management)
    • IPv6 與 IPv4 的管理規範
    • 異動流程
  • 多個 AWS Account 的管理
    • 形成 AWS IAM 多帳號的管理問題
    • IAM Role and Policy in Cross Account 的管理

AWS re:Invent 有個 Session 專門在說明這樣的需求:From One to Many: Evolving VPC Design (ARC302), Slideshare,整理一些重點:

Read More

Support IPv6 in VPC 2016-12-31 01:27:00

AWS 終於支援 IPv6,目前只在新的 Region - Ohio (us-east-2) 可以使用。

IPv6 in the Cloud: Virtual Private Cloud Deep Dive (NET307), Slideshare 有詳細說明。整理一些筆記。

Read More

AWS 去年十月發表 Are You Well-Architected?,主要說明四個良好架構必要的 支柱

  • Security
  • Reliability
  • Performance Efficiency
  • Cost Optimization

今年除了這四個,把 AWS Well-Architected (Nov 2016) 擴大成獨立課題,同時增加了另一項 Operational Excellence,每一個支柱也都有各自更深入的說明。

Read More

Read More

EC2 Run Command and SSM Agent 2016-10-25 14:35:00

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 的底層架構。

Read More

Open Guide to AWS 2016-10-16 23:53:00

在 Twitter 上看到這個:The Open Guide to Amazon Web Services

心裡想的就是:『把我想做的都做玩了』。我在整理 AWS Study Roadmap by Categories 的時候,也想整理過類似的東西。

把他的目錄條列出來,前面有一些資訊很重要,特別說明。

Read More

AwsOps Security Group Updater 2016-10-16 14:35:00

我自己有好幾個 AWS Accounts 作為學習用途,但因為是自己的帳號,所以在 Security GroupsBilling 會特別管理。

我開了一台 EC2 Instance 在 Public Subnet,為了避免不必要的安全性問題,加上現在居住的環境不是固定 IP (每天都會變動),所以寫了一隻小程式,透過 Raspberry Pi 每天自動更新指定的 Security Group,在安全與便利取得平衡。

Read More

Migrate to AWS NAT Gateway 2016-10-10 10:30:00

將公司在 AWS 上的 NAT Instance 換成 NAT Gateway,事前評估、驗證、溝通與執行紀錄。

Read More

新聞來源:AWS CloudFormation Update – YAML, Cross-Stack References, Simplified Substitution

有三個很重大的更新:

  • YAML Support: 主要的新功能,可以用 YAML 寫 Template。CloudFormation 的 Function 則是用 !GetAtt 表示。
  • Cross Stack References: 可以用 ImportValue function 參考其他 stack 的變數。被參照的 stack reference 就不能刪除。
  • Simplified Substitution: 可以用 This is ${VarName} 的方式做字串取代。
    • 原本要都要透過 Fn:Join 做字串串接,Template 會變得很難閱讀。
    • 現在可以透過這樣的方式: !Sub | "This is ${VarName}"
    • 很多地方需要使用 userdata 啟動 ec2 時,需要把整段 bash 放入,透過這個新的表示方式就很容易閱讀
Read More

Integrate GIT in Redmine 2016-09-17 08:45:00

整理如何設定 git (github, bitbucket, gitlab) 與 Redmine Issue 整合.

這個目的是讓 commit 的東西跟 issue 做關聯性,可以讓相關人員知道到底改了些什麼?

這方法不需要另外安裝 Redmine Plugins, 設定分以下步驟:

  • Git Repository 與 Redmine 同步 (系統管理者)
  • 訊息關鍵字設定 (系統管理者)
  • 專案設定 (專案負責人)
Read More

有人在問 Lambda 抓取 S3 資料出現下載時間過大 (latency) 的問題,我做了這樣的假設:

  1. 把 Lambda 放在 VPC 裡
  2. 把 VPC endpoint 打開,指定到 Lambda subnet 的 Route Table

推論基礎是:都在 LAN 裡的傳輸,會比出去到 WAN 還快。

以 AWS 來說,Lambda / S3 都是在 VPC 裡 (LAN) 的網路傳輸應該會比透過 WAN 去 S3 拿還好。不過找了 Lambda 對於 VPC / Network 官方文件的描述,都沒有提到類似的。

基於好奇心,做了以下的測試。

Read More

這張考試重點回到 Developer,考試範圍除了 Solution Architect (ASA) / SysOps Administrator (ASOA) 都已經很熟悉的 VPC / EC2 / IAM / S3 … 等,另外的重點都在 DynamoDB / 3S (SQS, SES, SNS) / SWF / AWS API。

Read More

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,文章提到幾個設計的重點:

  • Fast (快)
  • Managed (好)
  • Scalable (好)
  • Durable and Highly Available (好)
  • Flexible (好)
  • Low cost (便宜)

簡單說就是:快、好管理、玩不壞、彈性,最重要的是,便宜,這不就是下面這張圖 XDD

DynamoDB 辦到了!

Forrester Wave: Big Data NoSQL, Q3 2016: DynamoDB 完勝其他 Cloud NoSQL.

Anyway,以下整理的是 DynamoDB 的重要概念、背後運作的原理。圖文資料都出自官方文件:DynamoDB Developer Guide 。 (有點像在翻譯練習 XD)

Read More

AWS Application Load Balancer 2016-08-11 23:27:00

新聞來源: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.

Read More

Ops as Code with AWS CLI 2016-08-03 21:53:00

整理一些利用 AWS CLI 作維運工作的例子,像是:

  • 根據 Tag 條件,定期刪除不需要使用的 EC2 Instances
  • 根據 Tag 條件,將 EC2 Instances 定期備份成 AMI / Snapshot
  • 統計 EC2 使用狀況。

另外還有 AWS CLI 的使用心得,目的就是達到 Ops as Code

Read More

考完 Solutions Architect (以下簡稱 ASA) 之後,就開始準備考這張 SysOps Administrator (以下簡稱 ASOA),主要因為現在主要的工作內容就是 System Operations / Administration 為主。

以下整理 Study 的摘要與心得。

Read More

整理 EC2 Instance Lifecycle 和常遇到的 Troubleshooting.

Read More

Security Groups and Network ACLs 2016-07-08 13:35:00

整理 AWS Security GroupsNetwork ACLs 的差異,特別是 rule 的 statefulstateless 的差異。主要參考自下表:

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/VPC_Security.html
摘錄自 Security in Your VPC

Read More

AWS ELB 是利用 EC2 + Auto Scaling Group / Launch Configuration 實作的 (我猜的)。之前 觀察 Cloudtrail 更加應證此現象。而每一個 ELB 後面有多少台 EC2 可以從 ENI 的數量看得出來。但是 EC2 的數量卻跟 ELB 後面的 Backend 數量不成比例。整理觀察到的現象 …

Read More

利用 IAM Policy、以及 EC2 ResourceTag 限制權限,像是只有 DBA 可以針對 DB 機器做動作。不過搞了半天,踩了一個大雷 …. 整理以下 …

Read More

AWS Security Best Practices

使用 AWS 有一段時間,但是真的認真學習相關知識,然後在實務上應用,大概才一年的時間。

過程中,覺得 AWS 整個 Cloud 的技術以及 Solution 相當完整,教育訓練也很有系統,加上工作的需求,於是興起考認證的念頭。

剛開始準備其實有點無頭蒼蠅,讀了好幾篇 Whitepapers 和 Guide,發現東西真的是太多了,後來找了一些心得分享,發現官方有完整的 考試指南,才開始收斂準備的方向。

準備考試之前,先確認以下:

  • 考試的範圍:AWS 的東西 非常非常多 ,範圍也是 非常非常大 ,每個 Service 都有一定程度的複雜 (像 EC2, S3, VPC, CloudFront),同時又會相互關聯、以及適當的 Practices,所以知道考試範圍,才知道接下來怎麼安排準備。
  • 實作:考試題目很活,很少記憶性的題目,大多是給予一個情境,然後問用哪些方案,或者做 trouble shooting。盡可能多練習,考試的內容很多是實務上的問題。
  • 盡可能地在實作中,想問題,然後從 User Guide / Developer Guide / Whitepapers / AWS Developer Forums 找答案.

以下是我準備時,所閱讀的東西,有些已經把重點整理在 blog。

Read More

Read More

Study Notes - AWS S3 2016-04-07 21:53:00

S3 是 AWS 推出的 第一個 SaaS,他看似簡單,但其實非常複雜,整理的摘要如下:

  • 基本概念
  • 功能
  • 權限
Read More

Node.JS left-pad 事件 2016-04-07 11:27:00

這件事情 NPM & left-pad: Have We Forgotten How To Program?,似乎在 node.js 圈吵很兇 ….

node.js 現在讓人最困擾的就是: 每個 module 都有小而美的精神,而且都很有個性 (跟 Un*x 很像)。但就是太有個性了,所以讓人覺得隨便的感覺 ….. 特別是很多 source code pull 下來真的是慘不忍睹 … 可讀性差, naming 混亂 ….

一隻 function module 放到 npm, 有可能就會被大的 module 參考. (很多 module 裡只有一行 code 的 ….)

像 left-pad 這種一個 loop 的東西,開發快當然沒問題,但從效能角度來看是有待商榷的,甚至是出局的。

PHP 剛開始的 function 大概就是這樣,超級亂的 function 與 naming / arguments / output … 但是能動 …. 然後 node.js 有些 “慣例性的用法”, 像是 lodash, 熟悉了就還好, 但是可讀性很差. 感覺很像 perl … 寫的人很爽,接手的 XXX 罵不完.

這樣的生態圈發展很快,也非常熱絡,但是對於需要高效能、穩定性、標準化的實務應用來講,還是要多慎選 modules 的使用。特別是效能的評估與架構性。

雖然感覺很亂,語法 (ES6) 在 OO 方面也不夠成熟, 像是沒 interface, TypeScript 才有; 只能宣告成員方法,無法宣告成員屬性; 沒有 private 修飾 …. (可能有,或者有類似的寫法 ….) …. runtime 能否做 profiling, memdump, 分析工具? 重構工具?

但是,天下分久必合,合久必分 …. node.js 還是很棒 + 潮到出水的,值得投資學習 ….

Reference

Read More