Weitere ähnliche Inhalte Ähnlich wie Ops as Code using Serverless (20) Ops as Code using Serverless 3. ● What is Ops?
● Ops 有哪些工作項目?
○ 效益是什麼?花多少成本?
○ 沒做會怎樣?做了又怎樣?
● Ops 曾經換過其他方法或技術?
● 新技術都能滿足需求嗎?為什麼?
Questions
#3
4. 田野調查
● 有多少人是 Developer ? (負責 Business Requirement)
● 有多少人負責上線後維運 SysAdmin ?包含環境建置、監控?
● 有人是 Full Stack Developer (從需求、開發、測試、維運一條龍的) ?
● 有人是 Leader、PM / Scrum、Manager?
● 在場有 HR、Head Hunter 嗎?
● 在場有 CIO、COO、CTO、資本家嗎?
#4
6. #6
● 目前任職 91APP 研發處 資深經理,負責 AWS 管理、
系統維運、Microservices 開發。這幾年專注在 AWS、
DevOps / SRE、架構 … 等。
● 工作經歷:
○ Software Developer (Java/Eclipse Plugins)
○ Software QA Manager (IoT)
○ System Operation Manager (電商)
● AWS Certified Solution Architect, SysOps, Developer
● Blog
○ Complete Think
○ 喝咖啡 聊音樂
● Facebook Group
○ Site Reliability Engineering Taiwan (SRE)
Rick Hwang
14. 公司
治理
產品
開發
IT (Infra) Ops Sys Ops Dev Ops Biz Ops
14
人
事
MIS System Engineer
SRE: Site Reliability Engineer
Help Desk
Support Engineer
FAEDevOps Engineer
Network Enginner
Security Expert
Product Feedback and Bug
CI / CD FAQProvisioningAsset Management
Security & Patch
DNS, SSL
Compliance
Log and Analysis
Emergency Management
Release Engineer
AAA & SSO & Faderation
Billing, Cost, Budget, Purcharse Reliability Engineering
BCP & DR
Capacity and Performance
Observability Monitor
On-Call Dashboard
see: What is Ops?
StorageNetwork ACL
Public Relations
Health CheckRouter & Switch
17. 能見度
IT
(Infra)
Ops
Sys
Ops
Dev
Ops
Biz
Ops
公司治理
節 (ㄔㄥˊ) 流 (ㄅㄣˇ)
產品開發
開 (ㄕㄠ) 源 (ㄑㄧㄢˊ)
Resource
OpsasCode
監控 (Monitoring)
● 值班、On-Call
● Health Check
● 異常通報
● Dashboard
● 監控指標
● 觀測、量測
● 資源監控
● 異常處理流程
● Log 蒐集與分析
● 網路監控
維 (ㄉㄚˇ) 護 (ㄗㄚˊ)
● 容量規劃、壓測
● 資源管理
● DNS 管理
● 預算成本
● SSL 管理
● OS Patch
● Security Patch
● Storage
● 災難還原
● 備份還原
● SSO AAA
● 設備採購
● 網路規劃
● 資產管理
● 訂便當
● 訂飯店
● 叫計程車
● 辦尾牙
20. #20
案例
● Alert System
● Service Health Checker
● Resources Status Reporter - CPU / Mem / Storage / IO
● EC2 Instance Status Checker
● SSL Expiration Checker
● EC2 Snapshot and Checker
● Firewall Expose Checker
● Log Analysis
25. Service Status Reporter (外在因素)
● 目的:隨時知道服務的狀況,像是 Request /
4XX / 5XX
● 優點:
○ 容易部署、配置
○ 可以進 Git 版空
○ Operator 馬上可以有產能
● 問題:EC2 掛了 Slack 會變得很安靜
#25
30. #30
EC2 Start / Stop Lifecycle Checker
● 目的:無法 AutoScaling 的機器開關機排程
● 問題:負責的 EC2 掛了,會影響服務
34. 問題一:維運 維運程式 (Ops OpsCode)
● 機器用最小成本 (t2.small)
○ 資源沒了,這些事就沒了,像是 Slack 很安靜
○ 弄 HA (High Available) 嗎?別鬧了 ….
● Code 不知道藏在哪裡機器,能動就好
○ 用什麼身份跑
● 沒人知道完整的原始碼在哪
● 監控對象有異動時,怎麼調整?
● Script 很難維護,重複性高
○ 全公司的人都在寫 Slack Webhook!!!
● 人員異動,東西在哪?
#34
36. 問題二:監控 監控系統 (Monitoring Monitoring Systems)
● 監控系統掛了
○ Cacti / Nagios
○ Slack 掛了
● Log Storage 掛了
● ELK 掛了
● $$$ (不要問,很恐怖)
● 監控上面的東西 ….
#36
38. ● Design? Unit Test?
● Configurable?
● Code Review?
● Provisioning?
● Source Control? Git Flow?
● CI / CD ?
● 這 Code 是 Code?
● 產品的程式使用工程方法,上線之後的維運程式能動就好?
問題三:Ops Code 的 Code 是 Code?
#38
41. Serverless using AWS Services
#41
LambdaCloudWatch Slack
Event Source
Scheduler / Config
Ops Code Receiver
44. ● Status Reporter
● Alert System
● Health Checker
● Log Analysis
● Security Checker
● Backup and Recovery
Ops as Code using Serverless
#44
47. EC2 Auto Recovery
● 目的:EC2 硬體故障、自動 Recovery or 人工介入
● 實作:CloudWatch Alarm + SNS + Lambda + Slack
● 部署流程:透過配置開啟 Auto Recovery (yaml),進 Git,自動 Recovery
#47
49. Site to Site VPN HA Checker
#49
● 目的:
○ 檢查跨 Region 線路是否正常
○ 異常時候自動切換 Route Table
● 實作: CloudWatch Event + Lambda +
Slack
● 動態檢查切換 Route Table
50. Tips for Lambda Development
echo "Update function code."
aws lambda update-function-code --function-name
"${FUNC_NAME}" --zip-file fileb://${IMAGE_NAME}
echo "Update function configuration."
aws lambda update-function-configuration --function-name
"${FUNC_NAME}" --description "deployed version: $TS"
echo "Publish version: ${TS}"
# 在 Lambda 保留一個舊版, 可以 Rollback
aws lambda publish-version --function-name
"${FUNC_NAME}" --description "deployed version: $TS"
#50
54. 關鍵因素:標準化開發流程、工程方法
● Design First
○ 透過討論流程設計,讓 Dev & Ops 一起開發討論
● 開發
○ Lambda 容易開發,大部分 Ops 可以上手 (建議 Python)
○ 可以 Unit Test,有 Docker 可以使用 (lambci/lambda)
○ Lambda 自帶版控功能,容易 Rollback
● Configurable
○ 為 JSON 資料結構,可以人工或者透過程式 產生配置檔
○ 可以版控,容易交接給其他人
● 部署
○ 透過 AWS CLI 作部署
○ 容易設計與開發
#54
55. 關鍵因素:Dev & Ops 的協作
● 複雜的邏輯
○ Ops 開需求,Dev 實作
○ 走標準化開發流程與需求
● Dev 跟 Ops 的互動
○ Ops 懂 AWS / Infra
○ Dev 熟悉 Programming Language
○ Dev 收到自 Ops 的回饋
● Ops 也能來寫 Code,提升個人價值
● 善用 Cloud Native 特性
#55
56. 關鍵因素:新時代的技術 - Serverless
● 沒 Server 需要維護了
● 自然而然就 HA 了
● Security 是天然的
● AWS 的 Action 都可以自動化 (as Code),像是 CloudWatch 的配置
● 透過 Event-Driven 整合 AWS 其他服務,像是監控、Log 分析等
#56
57. #57
EC2 Instances
Log Shipper
Logs
Log Groups
Log Stream A
Log Stream B
Log Stream C
Log Stream N
Alarms
Filters
[ts, hostname, scope=NGX, tcp_all, tcp_time_wait, tcp_established, ...]
/var/log/app/*.log
2017-06-11T08:45:01 app1 NGX 47 0 47 0 0 0
2017-06-11T08:45:01 app2 NGX 52 0 52 0 0 0
2017-06-11T08:46:01 app1 NGX 53 0 52 0 0 0
2017-06-11T08:46:01 app2 NGX 52 0 51 0 0 0
2017-06-11T08:47:01 app1 NGX 53 0 53 0 0 0
2017-06-11T08:47:01 app2 NGX 53 0 53 0 0 0
2017-06-11T08:48:01 app1 NGX 59 0 59 0 0 0
2017-06-11T08:48:01 app2 NGX 52 0 51 0 0 0
2017-06-11T08:49:01 app1 NGX 48 0 48 0 0 0
Dashboard
Metrics
S3
SNS Topics
Export
Streaming
Push
Amazon ESLambda
請參考:淺談系統監控與CloudWatch 的應用
Monitoring System
71. 還是要面對這些問題 ...
● 用啥語言寫? Node.js、Python、Java、Golang、C#、為什麼沒有 Ruby!!
● Function 相依性、同步與非同步、Exception Handler (DLQ)
● 分散式架構、黑盒子、黑魔法、黑白無常
● 如何有效的 Trace & Debug、蒐集 Log 、監控
● 怎麼測試?怎麼 CI / CD
● Config 放哪?Key / Credential 放哪?
● 團隊知道要做這些事?敏捷?
● 主管知道這些事情的價值?主管的主管知道?老闆知道?
● 怎麼找到會這些東西的人?
● ...
#71
76. ● What is Ops?
● Ops 有哪些工作項目?
○ 效益是什麼?花多少成本?
○ 沒做會怎樣?做了又怎樣?
● Ops 曾經換過其他方法或技術?
● 新技術都能滿足需求嗎?為什麼?
Recap
#76
77. ● What is Ops?
● Conclusion SRE
● 淺談系統監控與 CloudWatch 的應用
● AWS Certified SysOps Administrator 準備心得
● 自動化帶來的問題、自動化 XXX 的陷阱
● Ops as Code with AWS CLI
簡報構思與緣由
77