Successfully reported this slideshow.
Your SlideShare is downloading. ×

Ops as Code using Serverless

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 80 Ad

More Related Content

Slideshows for you (20)

Similar to Ops as Code using Serverless (20)

Advertisement

More from Rick Hwang (19)

Recently uploaded (20)

Advertisement

Ops as Code using Serverless

  1. 1. https://day.ithome.com.tw/serverless/ Rick Hwang 2018/03/29 Ops as Code using Serverless 2
  2. 2. ● What is Ops? ● Ops 有哪些工作項目? ○ 效益是什麼?花多少成本? ○ 沒做會怎樣?做了又怎樣? ● Ops 曾經換過其他方法或技術? ● 新技術都能滿足需求嗎?為什麼? Questions #3
  3. 3. 田野調查 ● 有多少人是 Developer ? (負責 Business Requirement) ● 有多少人負責上線後維運 SysAdmin ?包含環境建置、監控? ● 有人是 Full Stack Developer (從需求、開發、測試、維運一條龍的) ? ● 有人是 Leader、PM / Scrum、Manager? ● 在場有 HR、Head Hunter 嗎? ● 在場有 CIO、COO、CTO、資本家嗎? #4
  4. 4. #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
  5. 5. https://day.ithome.com.tw/serverless/ Rick Hwang 2018/03/29 Ops as Code using Serverless 8
  6. 6. What is Ops? Everyone talks about it, but nobody knows about it.
  7. 7. 10https://twitter.com/danariely/status/287952257926971392
  8. 8. 11https://twitter.com/danariely/status/287952257926971392 Ops
  9. 9. Things on Live nobody wants to do it.
  10. 10. What is Ops?
  11. 11. 公司 治理 產品 開發 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
  12. 12. 能見度 IT (Infra) Ops Sys Ops Dev Ops Biz Ops 公司治理 節 (ㄔㄥˊ) 流 (ㄅㄣˇ) 產品開發 開 (ㄕㄠ) 源 (ㄑㄧㄢˊ) Resource OpsasCode
  13. 13. What is Ops?
  14. 14. 能見度 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 ● 設備採購 ● 網路規劃 ● 資產管理 ● 訂便當 ● 訂飯店 ● 叫計程車 ● 辦尾牙
  15. 15. SRE CH05 Eliminating Toil (減少瑣事)
  16. 16. #19 Ops Code 的特性 ● 邏輯簡單 ● 高度重複性 ● 不允許出錯 ● 或者出錯沒關係
  17. 17. #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
  18. 18. https://day.ithome.com.tw/serverless/ Rick Hwang 2018/03/29 Ops as Code using Serverless 22
  19. 19. #23 Services People OpsCode Virtual Machine Triggered by Crontab, Realtime or Manual Notification Do something push or pull mode
  20. 20. #24 Slack Services Operators Developers OpsCode EC2 Instance Triggered by Crontab, Realtime or Manual Pull Metric Data
  21. 21. Service Status Reporter (外在因素) ● 目的:隨時知道服務的狀況,像是 Request / 4XX / 5XX ● 優點: ○ 容易部署、配置 ○ 可以進 Git 版空 ○ Operator 馬上可以有產能 ● 問題:EC2 掛了 Slack 會變得很安靜 #25
  22. 22. Service Resource Reporter (內在條件) ● 目的:隨時知道資源使用狀況,像是 CPU / Memory / Storage / IO … etc. ● 問題:EC2 掛了 Slack 會變得很安靜 #26
  23. 23. Service Heath Checker ● 目的:隨時可以知道服務是否健康 ● 問題:EC2 掛了,要手動去看服務是否正常 #27
  24. 24. #28 DNS Expiration Checker ● 目的:DNS 過期檢查,內外有數十 ~ 數千 DNS 要管理 ● 問題:EC2 掛了,忘了 Renew → 客戶的 Site 就 GG 了
  25. 25. #29 SSL Expiration Checker ● 目的:SSL 過期檢查,有數千、上萬個 SSL Certification 要確認 ● 問題:EC2 掛了,忘了 Renew → Browser 報不安全
  26. 26. #30 EC2 Start / Stop Lifecycle Checker ● 目的:無法 AutoScaling 的機器開關機排程 ● 問題:負責的 EC2 掛了,會影響服務
  27. 27. #31 EC2 Snapshot and Checker ● 目的:定期備份重要的機器 ● 問題:負責 EC2 掛了,備份就會掉
  28. 28. #32 執行前面程式的機器 ● 這些 EC2 掛了,前面做的事就掰了
  29. 29. 前述案例實作不難 但往往出問題了 可能很久後才被發現 損失已經一段時間了
  30. 30. 問題一:維運 維運程式 (Ops OpsCode) ● 機器用最小成本 (t2.small) ○ 資源沒了,這些事就沒了,像是 Slack 很安靜 ○ 弄 HA (High Available) 嗎?別鬧了 …. ● Code 不知道藏在哪裡機器,能動就好 ○ 用什麼身份跑 ● 沒人知道完整的原始碼在哪 ● 監控對象有異動時,怎麼調整? ● Script 很難維護,重複性高 ○ 全公司的人都在寫 Slack Webhook!!! ● 人員異動,東西在哪? #34
  31. 31. Source: Getting Started with Serverless Architectures #35
  32. 32. 問題二:監控 監控系統 (Monitoring Monitoring Systems) ● 監控系統掛了 ○ Cacti / Nagios ○ Slack 掛了 ● Log Storage 掛了 ● ELK 掛了 ● $$$ (不要問,很恐怖) ● 監控上面的東西 …. #36
  33. 33. #37 Source: https://speakerdeck.com/monitorama/pdx-2017-roy-rapoport
  34. 34. ● Design? Unit Test? ● Configurable? ● Code Review? ● Provisioning? ● Source Control? Git Flow? ● CI / CD ? ● 這 Code 是 Code? ● 產品的程式使用工程方法,上線之後的維運程式能動就好? 問題三:Ops Code 的 Code 是 Code? #38
  35. 35. https://day.ithome.com.tw/serverless/ Rick Hwang 2018/03/29 Ops as Code using Serverless #40
  36. 36. Serverless using AWS Services #41 LambdaCloudWatch Slack Event Source Scheduler / Config Ops Code Receiver
  37. 37. #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
  38. 38. Serverless #43 ● 容易開發 ● 架構簡單 ● 軟體工程 ● 持續部署 ● 容易配置 ● 高可用 ● 可維護 ● 低成本 ● 安全 Code Ops
  39. 39. ● Status Reporter ● Alert System ● Health Checker ● Log Analysis ● Security Checker ● Backup and Recovery Ops as Code using Serverless #44
  40. 40. CloudWatch Reporter ● 目的:隨時可以知道系統的狀況 ● 實作: ○ CloudWatch Event Role + Lambda + Slack ● 部署流程:配置 json, git 版控 ● 不用養機器、成本極低:每月不到 1USD #45
  41. 41. CloudWatch Alarm ● 目的:系統資源告警 ● 實作:CloudWatch Alarm + SNS + Lambda + Slack ● 部署流程:告警的可配置 (yaml),進 Git #46
  42. 42. EC2 Auto Recovery ● 目的:EC2 硬體故障、自動 Recovery or 人工介入 ● 實作:CloudWatch Alarm + SNS + Lambda + Slack ● 部署流程:透過配置開啟 Auto Recovery (yaml),進 Git,自動 Recovery #47
  43. 43. Firewall Expose Checker #48 ● 目的:檢查機器的 Security Group 是否允許對外 ● 實作: AWS Config + Lambda + Slack
  44. 44. Site to Site VPN HA Checker #49 ● 目的: ○ 檢查跨 Region 線路是否正常 ○ 異常時候自動切換 Route Table ● 實作: CloudWatch Event + Lambda + Slack ● 動態檢查切換 Route Table
  45. 45. 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
  46. 46. 到這裡,不難發現
  47. 47. 不斷重複使用 #52 LambdaCloudWatch Slack Event Source Scheduler / Config Ops Code Receiver
  48. 48. #53 Slack Target Services QA Developers Tasks Event Source Configs Operators Developers Binding Maintain Develop Commit Deploy 關鍵因素 PM / Boss Operator Helpdesk Feature Request
  49. 49. 關鍵因素:標準化開發流程、工程方法 ● Design First ○ 透過討論流程設計,讓 Dev & Ops 一起開發討論 ● 開發 ○ Lambda 容易開發,大部分 Ops 可以上手 (建議 Python) ○ 可以 Unit Test,有 Docker 可以使用 (lambci/lambda) ○ Lambda 自帶版控功能,容易 Rollback ● Configurable ○ 為 JSON 資料結構,可以人工或者透過程式 產生配置檔 ○ 可以版控,容易交接給其他人 ● 部署 ○ 透過 AWS CLI 作部署 ○ 容易設計與開發 #54
  50. 50. 關鍵因素:Dev & Ops 的協作 ● 複雜的邏輯 ○ Ops 開需求,Dev 實作 ○ 走標準化開發流程與需求 ● Dev 跟 Ops 的互動 ○ Ops 懂 AWS / Infra ○ Dev 熟悉 Programming Language ○ Dev 收到自 Ops 的回饋 ● Ops 也能來寫 Code,提升個人價值 ● 善用 Cloud Native 特性 #55
  51. 51. 關鍵因素:新時代的技術 - Serverless ● 沒 Server 需要維護了 ● 自然而然就 HA 了 ● Security 是天然的 ● AWS 的 Action 都可以自動化 (as Code),像是 CloudWatch 的配置 ● 透過 Event-Driven 整合 AWS 其他服務,像是監控、Log 分析等 #56
  52. 52. #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
  53. 53. 告警系統 #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
  54. 54. Health Checker #59 Operators CloudWatch Event (time-based) Slack-Notifier Info Developers Health-Checker Warning ● Urgent: SMS, Slack ● Warning: Slack ● Info Target Services
  55. 55. Serverless Log Analysis #60 AthenaS3 CloudWatch Log EC2 Instances Container Lambda Batch Realtime SNSRealtime
  56. 56. AWS Services #61 API Gateway Step Functions SNS SES CloudWatch DynamoDB Lambda CloudTrail Athena AWS Config S3 SQS SSMGlacier
  57. 57. #62 Serverless ● 容易開發 ● 架構簡單 ● 軟體工程 ● 持續部署 ● 容易配置 ● 高可用 ● 可維護 ● 低成本 ● 安全 Code Ops 百年傳統 工程方法 全新感受
  58. 58. Serverless 真的很美好?
  59. 59. 躺著幹? NoOps? IAOps? 成本變少?不用管 Server? 減少溝通成本? OP 沒工作? 沒異常? Code 很好寫? 不用維護了? 人很好找? 有成就感? 加薪了? RickOps?
  60. 60. Things break; that’s life. SRE: CH13 - Emergency Response
  61. 61. Source: 環太平洋 Pacific Rim 2013
  62. 62. 事情都是一體兩面的 形式改變,精神不滅
  63. 63. 69 https://mp.weixin.qq.com/s/cNXTpEtStri-U1U0UB_eUw
  64. 64. AWS Services #70 API Gateway Step Functions SNS SES CloudWatch DynamoDB Lambda CloudTrail Athena AWS Config S3 SQS SSMGlacier 14個 Services
  65. 65. 還是要面對這些問題 ... ● 用啥語言寫? Node.js、Python、Java、Golang、C#、為什麼沒有 Ruby!! ● Function 相依性、同步與非同步、Exception Handler (DLQ) ● 分散式架構、黑盒子、黑魔法、黑白無常 ● 如何有效的 Trace & Debug、蒐集 Log 、監控 ● 怎麼測試?怎麼 CI / CD ● Config 放哪?Key / Credential 放哪? ● 團隊知道要做這些事?敏捷? ● 主管知道這些事情的價值?主管的主管知道?老闆知道? ● 怎麼找到會這些東西的人? ● ... #71
  66. 66. Severless 可靠? 相信 Providers: AWS / GCP / Azure? 相信專家?還是相信團隊? #72
  67. 67. Serverless != NoOps
  68. 68. https://day.ithome.com.tw/serverless/ Rick Hwang 2018/03/29 RECAP Ops as Code using Serverless #75
  69. 69. ● What is Ops? ● Ops 有哪些工作項目? ○ 效益是什麼?花多少成本? ○ 沒做會怎樣?做了又怎樣? ● Ops 曾經換過其他方法或技術? ● 新技術都能滿足需求嗎?為什麼? Recap #76
  70. 70. ● What is Ops? ● Conclusion SRE ● 淺談系統監控與 CloudWatch 的應用 ● AWS Certified SysOps Administrator 準備心得 ● 自動化帶來的問題、自動化 XXX 的陷阱 ● Ops as Code with AWS CLI 簡報構思與緣由 77
  71. 71. #78
  72. 72. https://day.ithome.com.tw/serverless/ Rick Hwang 2018/03/29 #79

×