TAIPEI
開發者交流之夜
1
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Sr. Manager / 91APP
義工 / SRE Taiwan
不是你選擇那一刻,而是那一刻選擇你
災難演練 @ AWS 實戰分享
Rick Hwang
2
2020/01/08
一、讓團隊動起來
二、系統與團隊
三、全面啟動
四、得到
Agenda
3
● Sr. Manager @ 91APP
● 經營管理
● Cloud / AWS
● DevOps / SRE
● Distributed Systems
● 音樂 吉他 鍵盤 編曲
● 哲學 科幻 金庸 喇賽
● Complete Think、喝咖啡聊音樂、
譯著:分散式系統設計
4
Rick Hwang
社群以讀書會形式,固定每兩週一
次進行,包含職涯規劃、事件處理、
可靠性工程、Cloud Native、持續交
付 … 等主題。過去三年讀書會共讀
了 SRE、持續交付、深入頗析
Kubernetes 三本書。
5
SRE Taiwan
https://www.sre.tw/
https://study-area.sre.tw/
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
讓團隊動起來 Top to Down
6
計畫 準備 準備 再準備 執行
2019H2 災難演練計畫
7
業務
目標
系統
架構
● 六小時 內把 核心業務系統 從 東京 遷移到 奧勒岡
● 核心業務:
○ Mobile APP 及 客戶官網 可正常瀏覽
○ 確認 首頁、商品頁、分類頁
○ 確認 會員、購物車、完成結帳、成立訂單
○ 確認 登入後台、查詢到該筆訂單
災難演練 業務目標
8
9
業務目標
系統架構
核心功能
RTO
RPO
服務範圍 協作團隊 成本結構
執行計畫
DR in Regional Level
10
Taipei HQ
Tokyo
ap-northeast-1
Oregon
us-west-2
成
本
復原時間
低
高
長 短
Backup & Restore
Pilot Light
Warm Standby
Multi Sites
DB Replication or Batch
Single APP Server Standby
Single Stack Set Standby
Full Stack Set Standby
災難還原策略的成本結構與復原時間
https://rickhw.github.io/
11
12
航空界有一個黑暗的祕密,
就是飛航安全通常得靠發生
空難才能提升,本系列要調
查著名的空難事件,找出出
錯的關鍵和原因。
2019/06/18 日本晚間傳 6.8 規模強震 各電視台中斷節目插播地震速報
2020/01/02 金正恩 2020 元旦揚言有「新戰略武器」,要美國付出代價
東北亞天然災害、國際局勢
13
● 向上溝通
● 演練目標
● 時程規劃
● 進度掌握
● 團隊溝通
● 各系統負責人訪談
● 確認各系統還原方
式
● 擬定各系統還原計畫
● 盤點與執行演練前置作業
● 確認還原方式
● 確認當天流程
● 確認資源需求
● 演練費用評估
2019/08 2019/09 2019/10 2019/11 2019/12
● 站立會議
● 執行預演
● 執行演練
● 報告整理
14
計畫 準備 準備 再準備 執行
準備雙十一
年度計畫
成立工作小組,擬訂執行計畫
雙十一
雙十二
公開說明會
15
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
系統與團隊 Conway’s Law
16
● 向上溝通
● 確認演練目標
● 團隊溝通
● 時程規劃
● 各系統負責人訪談
● 確認各系統還原方式
● 擬定各系統還原計畫
● 盤點與執行演練前置作業
● 確認還原方式
● 確認當天流程
● 確認資源需求
● 演練費用評估
2019/08 2019/09 2019/10 2019/11 2019/12
● 站立會議
● 執行預演
● 執行演練
● 報告整理
計畫 準備 準備 再準備 執行
17
300+ 40+ 200+
機器 服務 團隊
/ 個數 / 個 / 人
複雜度過高 溝通成本高
18
● 六小時 內把 核心業務系統 從 東京 遷移到 奧勒岡
● 核心業務:
○ Mobile APP 及 客戶官網 可正常瀏覽
○ 確認 首頁、商品頁、分類頁
○ 確認 會員、購物車、完成結帳、成立訂單
○ 確認 登入後台、查詢到該筆訂單
災難演練 業務目標 (Again)
19
Ingress
API Gateway
Proxy
Load Balancers
服務依賴與邊界
20
K8s Platform ERP
WebStore
OSM
Batch
Tracking
CMS
Search
Engine
Notification
Service
Search API
Loyalty
Payment
iOS
Android
Desktop
Jenkins
GitLab
Message Queue / AM / CM
21
WebStore
Data:Database、DynamoDB、S3
OSM
Kubernetes Cluster、Message Queue Config、Artifact Management、Gitlab
Batch
Ingress: Proxy、API Gateway、CloudFront、ELB
Payment
Infra
Data
APPs ERP
Networking (VPC)、AAA、DC
Search
CMS
Loyalty
Compute VM Provisioning、Container Images
22
App Images
with Semantic Versioning
Hardware / OS Version
Linux Tools
Windows Features
服務縱深與分工 - VM Based (Windows / Linux)
Infra 建置
Infra Team
Application 部署
各服務的團隊
Artifact
Repository
Config
Config
23
Container Images
Hardware
Kubernetes Platform
服務縱深與分工 - Container-Based
Artifact
Repository
Config
Config
Infra 建置
Infra Team
Application 部署
各服務的團隊
24
30+ 10+ 30+
機器 服務 團隊
/ 個數 / 個 / 人
實際動員資源、範圍
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
Divide and Conquer
25
訪談:找團隊 (服務) 的痛點
● 協助釐清系統架構
● 釐清服務邊界、服務依賴,重
疊的怎麼辦?
● 找到執行的痛點,不外乎
○ 配置管理
○ 資料同步
○ 環境建置
○ 部署流程
● 建立溝通默契與方式,讓成
員更知道彼此
● 找到 DoD,如何測試?
26
27
如何測試?
Internal DNS
demo-shop.91app.com
Service A
91APP TPE-HQ
us-west-2
DR WiFi
Fake DNS
Service B
Service A
ap-northeast-1
Service B
28
09:00 10:00 11:00 12:00 13:00 14:00 15:00 16:00
Infra Applications UAT
新聞報導:哥吉拉登陸日本
東京,造成所有網路與服務
中斷。
目標:事故發生後
,六小時還原系
統。
29
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
全面啟動 Bottom up
30
● 向上溝通
● 確認演練目標
● 團隊溝通
● 時程規劃
● 各系統負責人訪談
● 確認各系統還原方式
● 擬定各系統還原計畫
● 盤點與執行演練前置作業
● 確認還原方式
● 確認當天流程
● 確認資源需求
● 演練費用評估
2019/08 2019/09 2019/10 2019/11 2019/12
● 站立會議
● 執行預演
● 執行演練
● 報告整理
計畫 準備 準備 再準備 執行
站立會議
31
雙十一結束後一
週,每週一、三、
五中午站立。
任務類型分成:
1. 事前準備
2. 偷跑任務
3. 當天任務
遇到的問題
32
1. 建置問題
2. 資源問題
3. 測試方法
4. 驗收條件
5. 配置管理
6. 系統權限
7. 部署策略
1. 大家自己發起
2. 確認哪些要偷跑
3. 知道誰要等誰
(服務依賴)
4. 找到個服務驗證
項目
5. 確認大家都知道
測試方法
預演
33
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
34
1. 現場雙指揮官
2. 整點站立
3. 進度跟蹤
4. 各服務驗證
5. 問題回報
演練當天
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
35
08:00 09:00 10:00 11:00 12:00 13:00 14:00 15:00
Infra Applications UAT
新聞報導:哥吉拉登陸日本
東京,造成所有網路與服務
中斷。
下午 15:05 完成系統
還原。
36
得到
37
團隊
協作
系統
架構
● 六小時 內把 核心業務系統 從 東京 遷移到 奧勒岡
● 核心業務:
Mobile APP 及 客戶官網 可正常瀏覽
確認 首頁、商品頁、分類頁
確認 會員、購物車、完成結帳、成立訂單
確認 登入後台、查詢到該筆訂單
災難演練 業務目標
38
39
面對既有的工程問題
● 服務邊界問題
● 服務依賴盤絲錯節
● 環境建置的問題
● 跨 Region 的持續部署
● 部署可以再更好
● 配置管理可以再更好
● Artifact Management 的重要
40
團隊協作
● 團隊凝聚力變強了
● 大家培養了協作的工作方法
● 對系統了解更全面了,包含成本
● 負責的同仁:協作能力變強、表達能力變好了、技術能力提升了
41
執行管理
● 不要執著一定要用什麼技術
● 定義好目標,充分授權
● 做好向上管理與橫向聯繫
● 團隊與服務的關聯,就是溝通路徑 (康威定律)
42
Source Build Artifact
Repository
Programmers
Continuous Integration Continuous Deployment
Production
Test
R&D
Deploy
WebAPI v2.1.0
WebAPI v2.1.0
Test: Function, Regression, Performance
Go ProductionBuild, Pack
Code Quality, Unit Test
Source
WebAPI 20190323_v2.1.0
看見 CI / CD 全貌
Config
Infrastructure
Provisioning
Source: https://rickhw.github.io/2019/03/28/DevOps/DevOpsTaiwan-Meetup-Beginning-in-Artifacts-Management/
43
Software Delivery
Pipeline
(Installation, Deployment)
Artifacts
(Version, Build, Packing)
Infrastructure
(OS, Network, Security)
Provisioning / Orchestration
Configurations
(Profile, Settings, Keys)
軟體交付的四大支柱
Source: https://rickhw.github.io/2019/04/04/DevOps/Four-Pillars-of-Software-Delivery/
Practice and Principle
44
1. 掌握核心業務、成本
2. Single Codebase、Multiple Deployment
3. 測試環境就是演練環境
4. 掌握軟體交付四大支柱的原則
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
不是我們選擇那一刻,而是那一刻選擇了我們
You don’t choose the moment, the moment chooses you!
我們唯一能做的,就是做好準備
You only choose how prepared you are when it does.
Mike Burtch
Fire Chief
source: https://blog.codecentric.de/en/2018/07/chaos-engineering/
45
相關資訊
1. 聊聊軟體交付的濫觴 談產出物管理
2. 軟體交付的四大支柱 (Four Pillars of Software Delivery)
3. 導讀持續交付 2.0 - 談當代軟體交付之虛實融合
4. Whitepaper - Using AWS for Disaster Recovery
46
Thank you!
© 2020, Amazon Web Services, Inc. or its affiliates. All rights reserved.
47
Sr. Manager / 91APP
義工 / SRE Taiwan
Rick Hwang
2020/01/08

災難演練 @ AWS 實戰分享 (Using AWS for Disaster Recovery)