Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Ops as Code using Serverless (iTHome Serverless...

Ops as Code using Serverless (iTHome Serverless All-Star)

iTHome Serverless All-Star (20180329_4)
Blog: https://rickhw.github.io/2018/03/29/About/2018-Serverless-All-Star/

Avatar for Rick Hwang

Rick Hwang

March 29, 2018
Tweet

More Decks by Rick Hwang

Other Decks in Education

Transcript

  1. • What is Ops? • Ops 有哪些工作項目? ◦ 效益是什麼?花多少成本? ◦

    沒做會怎樣?做了又怎樣? • Ops 曾經換過其他方法或技術? • 新技術都能滿足需求嗎?為什麼? Questions #3
  2. 田野調查 • 有多少人是 Developer ? (負責 Business Requirement) • 有多少人負責上線後維運

    SysAdmin ?包含環境建置、監控? • 有人是 Full Stack Developer (從需求、開發、測試、維運一條龍的) ? • 有人是 Leader、PM / Scrum、Manager? • 在場有 HR、Head Hunter 嗎? • 在場有 CIO、COO、CTO、資本家嗎? #4
  3. #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
  4. 公司 治理 產品 開發 IT (Infra) Ops Sys Ops Dev

    Ops Biz Ops 14 人 事 MIS System Engineer SRE: Site Reliability Engineer Help Desk Support Engineer FAE DevOps Engineer Network Enginner Security Expert Product Feedback and Bug CI / CD FAQ Provisioning Asset 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? Storage Network ACL Public Relations Health Check Router & Switch
  5. 能見度 IT (Infra) Ops Sys Ops Dev Ops Biz Ops

    公司治理 節 (ㄔㄥˊ) 流 (ㄅㄣˇ) 產品開發 開 (ㄕㄠ) 源 (ㄑㄧㄢˊ) Resource Ops as Code
  6. 能見度 IT (Infra) Ops Sys Ops Dev Ops Biz Ops

    公司治理 節 (ㄔㄥˊ) 流 (ㄅㄣˇ) 產品開發 開 (ㄕㄠ) 源 (ㄑㄧㄢˊ) Resource Ops as Code 監控 (Monitoring) • 值班、On-Call • Health Check • 異常通報 • Dashboard • 監控指標 • 觀測、量測 • 資源監控 • 異常處理流程 • Log 蒐集與分析 • 網路監控 維 (ㄉㄚˇ) 護 (ㄗㄚˊ) • 容量規劃、壓測 • 資源管理 • DNS 管理 • 預算成本 • SSL 管理 • OS Patch • Security Patch • Storage • 災難還原 • 備份還原 • SSO AAA • 設備採購 • 網路規劃 • 資產管理 • 訂便當 • 訂飯店 • 叫計程車 • 辦尾牙
  7. #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
  8. #23 Services People OpsCode Virtual Machine Triggered by Crontab, Realtime

    or Manual Notification Do something push or pull mode
  9. Service Status Reporter (外在因素) • 目的:隨時知道服務的狀況,像是 Request / 4XX /

    5XX • 優點: ◦ 容易部署、配置 ◦ 可以進 Git 版空 ◦ Operator 馬上可以有產能 • 問題:EC2 掛了 Slack 會變得很安靜 #25
  10. Service Resource Reporter (內在條件) • 目的:隨時知道資源使用狀況,像是 CPU / Memory /

    Storage / IO … etc. • 問題:EC2 掛了 Slack 會變得很安靜 #26
  11. #28 DNS Expiration Checker • 目的:DNS 過期檢查,內外有數十 ~ 數千 DNS

    要管理 • 問題:EC2 掛了,忘了 Renew → 客戶的 Site 就 GG 了
  12. #30 EC2 Start / Stop Lifecycle Checker • 目的:無法 AutoScaling

    的機器開關機排程 • 問題:負責的 EC2 掛了,會影響服務
  13. 問題一:維運 維運程式 (Ops OpsCode) • 機器用最小成本 (t2.small) ◦ 資源沒了,這些事就沒了,像是 Slack

    很安靜 ◦ 弄 HA (High Available) 嗎?別鬧了 …. • Code 不知道藏在哪裡機器,能動就好 ◦ 用什麼身份跑 • 沒人知道完整的原始碼在哪 • 監控對象有異動時,怎麼調整? • Script 很難維護,重複性高 ◦ 全公司的人都在寫 Slack Webhook!!! • 人員異動,東西在哪? #34
  14. 問題二:監控 監控系統 (Monitoring Monitoring Systems) • 監控系統掛了 ◦ Cacti /

    Nagios ◦ Slack 掛了 • Log Storage 掛了 • ELK 掛了 • $$$ (不要問,很恐怖) • 監控上面的東西 …. #36
  15. • Design? Unit Test? • Configurable? • Code Review? •

    Provisioning? • Source Control? Git Flow? • CI / CD ? • 這 Code 是 Code? • 產品的程式使用工程方法,上線之後的維運程式能動就好? 問題三:Ops Code 的 Code 是 Code? #38
  16. #42 Slack Target Services QA Developers Tasks Event Source Configs

    Operators Developers Binding Maintain Develop Commit Deploy Concept of Architecture (High Level View) PM / Boss Operator Helpdesk Feature Request
  17. Serverless #43 • 容易開發 • 架構簡單 • 軟體工程 • 持續部署

    • 容易配置 • 高可用 • 可維護 • 低成本 • 安全 Code Ops
  18. • Status Reporter • Alert System • Health Checker •

    Log Analysis • Security Checker • Backup and Recovery Ops as Code using Serverless #44
  19. CloudWatch Reporter • 目的:隨時可以知道系統的狀況 • 實作: ◦ CloudWatch Event Role

    + Lambda + Slack • 部署流程:配置 json, git 版控 • 不用養機器、成本極低:每月不到 1USD #45
  20. CloudWatch Alarm • 目的:系統資源告警 • 實作:CloudWatch Alarm + SNS +

    Lambda + Slack • 部署流程:告警的可配置 (yaml),進 Git #46
  21. EC2 Auto Recovery • 目的:EC2 硬體故障、自動 Recovery or 人工介入 •

    實作:CloudWatch Alarm + SNS + Lambda + Slack • 部署流程:透過配置開啟 Auto Recovery (yaml),進 Git,自動 Recovery #47
  22. Site to Site VPN HA Checker #49 • 目的: ◦

    檢查跨 Region 線路是否正常 ◦ 異常時候自動切換 Route Table • 實作: CloudWatch Event + Lambda + Slack • 動態檢查切換 Route Table
  23. 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
  24. #53 Slack Target Services QA Developers Tasks Event Source Configs

    Operators Developers Binding Maintain Develop Commit Deploy 關鍵因素 PM / Boss Operator Helpdesk Feature Request
  25. 關鍵因素:標準化開發流程、工程方法 • Design First ◦ 透過討論流程設計,讓 Dev & Ops 一起開發討論

    • 開發 ◦ Lambda 容易開發,大部分 Ops 可以上手 (建議 Python) ◦ 可以 Unit Test,有 Docker 可以使用 (lambci/lambda) ◦ Lambda 自帶版控功能,容易 Rollback • Configurable ◦ 為 JSON 資料結構,可以人工或者透過程式 產生配置檔 ◦ 可以版控,容易交接給其他人 • 部署 ◦ 透過 AWS CLI 作部署 ◦ 容易設計與開發 #54
  26. 關鍵因素:Dev & Ops 的協作 • 複雜的邏輯 ◦ Ops 開需求,Dev 實作

    ◦ 走標準化開發流程與需求 • Dev 跟 Ops 的互動 ◦ Ops 懂 AWS / Infra ◦ Dev 熟悉 Programming Language ◦ Dev 收到自 Ops 的回饋 • Ops 也能來寫 Code,提升個人價值 • 善用 Cloud Native 特性 #55
  27. 關鍵因素:新時代的技術 - Serverless • 沒 Server 需要維護了 • 自然而然就 HA

    了 • Security 是天然的 • AWS 的 Action 都可以自動化 (as Code),像是 CloudWatch 的配置 • 透過 Event-Driven 整合 AWS 其他服務,像是監控、Log 分析等 #56
  28. #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 ES Lambda 請參考:淺談系統監控與 CloudWatch 的應用 Monitoring System
  29. 告警系統 #58 EC2 Instances CloudWatch Alarms Operators SNS-Adapter Slack-Notifier CloudWatch

    Event (time-based) SNS Topic Info, Warning Info Developers Health-Checker Auto Scaling SNS Topic Urgent SMS Warning • Urgent: SMS, Slack • Warning: Slack • Info SMS
  30. Health Checker #59 Operators CloudWatch Event (time-based) Slack-Notifier Info Developers

    Health-Checker Warning • Urgent: SMS, Slack • Warning: Slack • Info Target Services
  31. Serverless Log Analysis #60 Athena S3 CloudWatch Log EC2 Instances

    Container Lambda Batch Realtime SNS Realtime
  32. AWS Services #61 API Gateway Step Functions SNS SES CloudWatch

    DynamoDB Lambda CloudTrail Athena AWS Config S3 SQS SSM Glacier
  33. #62 Serverless • 容易開發 • 架構簡單 • 軟體工程 • 持續部署

    • 容易配置 • 高可用 • 可維護 • 低成本 • 安全 Code Ops 百年傳統 工程方法 全新感受
  34. 躺著幹? NoOps? IAOps? 成本變少? 不用管 Server? 減少溝通成本? OP 沒工作? 沒異常?

    Code 很好寫? 不用維護了? 人很好找? 有成就感? 加薪了? RickOps?
  35. AWS Services #70 API Gateway Step Functions SNS SES CloudWatch

    DynamoDB Lambda CloudTrail Athena AWS Config S3 SQS SSM Glacier 14 個 Services
  36. 還是要面對這些問題 ... • 用啥語言寫? Node.js、Python、Java、Golang、C#、為什麼沒有 Ruby!! • Function 相依性、同步與非同步、Exception Handler

    (DLQ) • 分散式架構、黑盒子、黑魔法、黑白無常 • 如何有效的 Trace & Debug、蒐集 Log 、監控 • 怎麼測試?怎麼 CI / CD • Config 放哪?Key / Credential 放哪? • 團隊知道要做這些事?敏捷? • 主管知道這些事情的價值?主管的主管知道?老闆知道? • 怎麼找到會這些東西的人? • ... #71
  37. • What is Ops? • Ops 有哪些工作項目? ◦ 效益是什麼?花多少成本? ◦

    沒做會怎樣?做了又怎樣? • Ops 曾經換過其他方法或技術? • 新技術都能滿足需求嗎?為什麼? Recap #76
  38. • What is Ops? • Conclusion SRE • 淺談系統監控與 CloudWatch

    的應用 • AWS Certified SysOps Administrator 準備心得 • 自動化帶來的問題、自動化 XXX 的陷阱 • Ops as Code with AWS CLI 簡報構思與緣由 77
  39. #78