ref: https://medium.com/sailpointtechblog/improving-on-call-engineering-at-sailpoint-35213090c35c
本篇是一個經驗分享文,Sailpoint 想要探討疫情後整個團隊是如何重建並且改善 On-Call 的整個運作模式。
因應 COVID 帶來的職缺變化,愈來愈多的遠端工作者加入到 SailPoint 的團隊中,整個 DevOps Team 的人數也因此整整翻了一倍。
過往的 on-call 流程基本上沒有什麼受到太多重視與關注,並且一直以來都運作的很好,但是隨者團隊人數與專案數量的提升,當前的運作方式只能用堪用來說
因此需要重新審思如何改善,加強整體效率。
SailPoint 之前的 On-Call 是使用 PageDuty 這套服務來處理的,因此團隊想要看看是否這中間還可以有改善的空間
不論是新的流程或是 PageDuty 有什麼功能是團隊還沒有妥善使用的。
Baby Steps with PagerDuty
PageDuty 有個名為 PagerDuty Virtual Summit 的年度盛會,作者團隊決定參加盛會來聽看看有什麼功能是目前沒有好好使用的。
除了 Digital Operations Tier 這個更加智慧甚至提供基於 machine learning 的相關控制功能外,作者團隊還學到了關於 Slack
的新整合功能,有鑒於整個團隊愈來愈趨向遠端協作, Slack 的使用也就變得愈加重要,因此團隊優先的將 Slack 整合該新功能。
Feature Rich Proof of Concept, A Short Story
1. 作者團隊於會後積極的聯繫 PageDuty 的團隊,想要針對各項新功能進行更多的探討與使用,這方面 PageDuty 也很積極的幫忙建立 PoC 環境與回答各種問題,讓團隊可以試用這些新功能
2. 第一個嘗試的功能是針對團隊的 RDS Alert 的智慧處理功能。過往當 DB 出現問題時 Cloud Watch 就會出現高達 60 多個相關 Alert,透過新的智慧功能這些 alerts 會被辨識為一個單一意外,就不會遇到 Alert 洗版的現象
3. 過往 RDS Alert 出現時,每次都要針對那些 Alert 一個一個的去 acknowledge,現在因為全部都統一辨識為單一 Alert,因此 acknowledge 也只需要執行一次,整個效率大幅度上升, on-call 的工程師可以花更多時間去專注解決問題。
4. 下一個嘗試的功能就是全新的儀表板,該儀表板顯示了 alerts 的趨勢變化與相關參數,這些資料讓該團隊每週的 on-call 會議有更多的資料去檢視過去一週的情況,藉此可以找到團隊中比較脆弱容易出事情的服務。
文章中還有兩個章節探討剩下的改善,對於 On-Call 有經驗也有興趣的人別錯過全文。
「devops工程師是什麼」的推薦目錄:
- 關於devops工程師是什麼 在 矽谷牛的耕田筆記 Facebook 的最佳貼文
- 關於devops工程師是什麼 在 DavidKo Learning Journey Facebook 的最佳貼文
- 關於devops工程師是什麼 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
- 關於devops工程師是什麼 在 [心得] 初階DevOps/SRE 工程師是如何煉成的- 看板Soft_Job 的評價
- 關於devops工程師是什麼 在 純靠北工程師, profile picture - Facebook 的評價
- 關於devops工程師是什麼 在 60秒告訴你「DevOps」是什麼? - YouTube 的評價
- 關於devops工程師是什麼 在 DevOps 工程師生涯寶典 - GitHub 的評價
- 關於devops工程師是什麼 在 答疑:Dev 和DevOps 有啥区别? - 坎德人的小包包 的評價
devops工程師是什麼 在 DavidKo Learning Journey Facebook 的最佳貼文
[敏捷和 DevOps 做得好的關鍵是什麼?]
如何判斷一家公司 agile 和 DevOps 做得好不好呢?
文化是很關鍵的因素, 但是這個東西是內在的, 不容易觀察出來
但是有什麼東西是外顯的? 很容易被觀察到呢?
在看過幾家成功案例後 (FB, Etsy, Microsoft, Netflix, Google)
你可以發現它們都有共同的地方 ......
那就是自動化測試做很多, 很廣, 很多層次 .....
有 BVT 測試, 有 daily build, 有單元測試, 有整合測試, 有壓測等等 ...
它佈下了許多安全網, 讓快速調整時也不會害怕
一旦出問題, 就會被及早抓出來
否則你的快速因應改變, 只是讓事情越改越可怕
工程師們, 努力增加你的自動化測試 喔
老闆們, 要讓工程師們有時間去做自動化測試 和增強其技能 喔
devops工程師是什麼 在 矽谷牛的耕田筆記 Facebook 的最讚貼文
ref: https://iximiuz.com/en/posts/devops-sre-and-platform-engineering/
本篇是一個由 Twitter 討論串引發的後續文章,作者想要聊聊 DevOps, SRE 以及 Platform Engineering 的差異。
文章中附有相關 Twitter 討論串的連結,對於原文有興趣的也可以去參閱一下 Twitter
註:就我個人觀察到的現象,台灣企業很少看到 Platform Engineer 的職位,有人知道有哪些公司有開這種職位可以留言分享一下
作者自述自己是個從事 SRE 工作但是內心卻是個軟體工程的技術專欄作家,因此就自己的過往經驗想分享一下對於這三者的看法,而這些討論就引起了一些回文
因此作者將這些概念整合下來寫下這篇文章來總結一下各方網友們的看法。
作者的軟體生涯中,從分工仔細的團隊到新創公司都經歷過,再還沒有認知到 DevOps/SRE 這類型名詞前就已經體驗過部署開發維運三合一的人生。
隨者愈來愈多人開始探討 DevOps 以及 SRE 這兩個詞,兩者之間的比較沒有停過,甚至還有專屬的兩個 awesome 系列 awesome-sre, awesome-devops 清單來列舉如何學習這兩個技術。
整個求職市場也因為這兩個名詞的出現而有變化,作者也因應這股潮流開始往下探索,因此最後就以自己自身的經驗來分享自己對於這些名詞的想法。
其中作者有提到一點也是我非常認同的,就是這些名詞代表什麼含義,這些職稱要做什麼都會隨者不同公司不同團隊而有變化,畢竟每個公司的產品跟商業走向都不同
期待能有一個一統天下的職稱跟工作內容反而才是不切實際的。所以接下來的探討就只是作者跟幾個網友們的討論,不要當作圭臬,也不要當作聖旨,自己有自己的想法比較重要。
# What is Development
1. 作者認為開發的概念非常簡單,就撰寫程式,唯一能夠為公司貢獻 $$$ 的職位,畢竟有人寫程式還有產品,沒人寫程式也沒什麼好部署的。
2. 推特網友表示: 只有 sales 才是幫公司賺錢的,剩下都是公司的支出
3. 作者從 2011 開始了軟體工程師生涯,過往作者都很期望自己可以去部署一下自己撰寫的程式,但是基本上都是團隊內的其他神秘人物會默默的部署這些程式到生產環境。
# What is DevOps
1. 作者不想探討何謂官方的正式定義,只想聊聊自己多年工作經驗的感想
2. 對作者來說, DevOps 是一個能夠讓開發者對於部署應用程式有更多機會與權力的文化,實作上沒有一定的準則
3. 作者還待過那些開發者都擁有 sudo 權限來部署應用的新創公司,不過現在這些流程都慢慢的被自動化 CI/CD 流程給取代。
4. DevOps 最初的想法應該是遠遠超過作者所描述的,不過作者就自己工作上的經驗,找工作的經驗,看職稱 JD 的經驗來看,DevOps 更像讓開發者打造的產物可以更有效率的被部署
5. DevOps 本身不應該去探討產品的商業邏輯,那是開發者要探討的。
# What is SRE
1. Google 推出了一系列的書來探討何謂 SRE,那系列書籍的想法偏向 SRE 是其中一種 DevOps 文化的實作方式。
2. 相對於 DevOps,作者更喜歡 SRE 帶來的職缺內容。
3. 作者對於提到 CI/CD pipeline 之類的職缺都感到無聊且沒興趣,而 DevOps 的工作職缺往往都充滿這些令人無聊的東西。
4. 相反的,作者更喜歡去專研系統問題,譬如探討為什麼會有 bug, memory leak, 效能不好...等
5. 作者認為 SRE 要負責去維護上線環境,確保使用上沒有問題。
6. Google 的 SRE 系列書籍還提到了關於 monitoring, alerting, SLO 等各種如何確保服務正常的機制。 Facebook 則是有非常著名的 Production Engineer 的職稱,其跟典型的 SRE 基本上沒太大的差別。
7. 推特網友表示: SRE 專注於生產環境, DevOps 專注於 CI/CD 與開發效率與流程
8. 另外一名推特網友表示(這也是我目前最喜歡的答案): DevOps 從開發角度為起點, SRE 從維護上線環境出發,兩職缺於某處產生交集。
# What is Platform Engineering
1. 作者想起當年還是一家新創的唯一一位工程師時,那時候還要去租借實體機器來架設環境,所以那時候也撰寫了不少腳本來安裝機器,也要確保機器之間的網路可以正常運作。
2. 加入一間比較有規模的公司後瞭解到看來 infra 相關的工作是一個很類似 SRE/DevOps 但是又有些許不同的領域
3. 作者認為 Platform Engineering 目標就是要打造一個可以讓 Dev, Ops, SRE 能夠使用的環境
4. 作者感覺 Platform Engineering 要負責維護 data-center 內上千台的機器,確保這群機器能夠正常運作,維護外也要包含升級,設定等。
# What's about titles?
1. 作者前述探討的都是基於負責領域,比較不去談這些職稱應該要做什麼
2. 根據作者經驗,當公司規模逐漸變大時,分工就會愈來愈細,這時候 Dev, Ops, SRE, PE 等職缺就會開始逐漸專項化。
3. 重點就是, YMMV (Your Mileage May Vary ),不同情況,不同答案,不要太專注於一個死板板的解釋。
個人想法: 公司要開什麼職缺名稱就不管他了,工作內容才是最重要的,有錢的任性老闆也可以開一個"開源軟體整合工程師"但是要你整合 CI/CD 加上維運的工作。
devops工程師是什麼 在 純靠北工程師, profile picture - Facebook 的推薦與評價
純靠北工程師1ab SRE工程師、DevOps工程師工作內容到底是什麼啊? 全平台留言https://kaobei.engineer/cards/show/1667 匿名發文請 ... ... <看更多>
devops工程師是什麼 在 60秒告訴你「DevOps」是什麼? - YouTube 的推薦與評價
![影片讀取中](/images/youtube.png)
DevOps 是什麼 ❓〕▪️360分鐘,打造 DevOps ... 將平常要花人力手動執行的工作交給Jenkins 處理, 工程師 不需要處理太多的雜事,有更多的時間可以好好 ... ... <看更多>
devops工程師是什麼 在 [心得] 初階DevOps/SRE 工程師是如何煉成的- 看板Soft_Job 的推薦與評價
markdown 好讀版:
https://tech-blog.jameshsu.csie.org/post/devops-entry-level-sre-road/
## 前言
背景是學生,大約兩年的 SA/DevOps 學習經驗,剛拿到 ByteDance 的 SRE offer,
所以應該可以算是 Entry-level 的 SRE 了,
會想寫這篇分享是因為看到滿多人對 DevOps/SRE 的印象是很吃經驗,
不太可能讓新鮮人做,對這種印象算一半認同(我就是反例XD),
另一方面也想讓有興趣的人知道該如何入門這個領域
詳細的背景在前一篇 SRE 面試文(#1WFpX6V3)寫得比較多
### 什麼是 DevOps/SRE?
我無意在這篇談 DevOps 的商業或管理價值,
也無意細分 DevOps Engineer 和 SRE 的區別,
很概括且從技術角度來說,DevOps 的重點是
1. 減少從設計、開發(需求、程式碼)到測試、部署(程式)的時間
2. 加強回饋機制(包括但不限於監控、告警)
3. 過程中持續快速的疊代、學習
(改寫 DevOps 三步工作法)
文末會附 DevOps 相關的書單
## 技能樹
這一部份會以 https://roadmap.sh/devops 搭配講解
以下的順序以我個人學習、接觸的時間軸做排列
### 語言
建議 Python、Go、JavaScript 三者至少要一個精通、一個熟練,第三個可以作為輔助。
會推薦這三個語言是因為這三個語言要寫自動化的小工具時都很方便;
其次這三個語言各自有強項:
- Python:易於和其他人協作、精於 ML(對,SRE 有可能會需要 ML 輔助)
- Go:很多 DevOps 的工具包含 Prometheus, Kubernetes, Docker, Drone
都是 Go 寫成的,要寫網頁後端也很輕鬆
- JavaScript:要寫簡單的網頁前端一定要會 JS,
像 aws cdk 也是 TypeScript 的支援比較豐富
但也不是說一定要學這三個語言,例如學 java 就可以結合 jenkins 生態系,
所以就看怎麼運用自己的優勢
### Linux/Shell Script
如果一開始接觸的是 Windows 環境,可以去裝 WSL 體驗 Linux,
不管如何,走這一行一定要學習 Live in terminal,
基本的 cd, ls 就不用說了,跟字串處理有關的 grep, sed, awk, cut 也都要很熟
還有像 wget, curl 等等,要列出所有會用到的指令和工具實在是列不完
有好的 google 搜尋能力的話,stackoverflow 會是你很好的朋友
對 git 也應該至少要會基本的並可以用在專案上
Linux 除了主流的 Ubuntu 以外也可以多嘗試其他 OS,例如 CentOS、Alpine 等等
這部份可以在挑選雲端的虛擬機器 或是 run container 的時候去多多嘗試
另外對 Linux 的觀念包含檔案系統、process management, DNS, DHCP 等等
也應該要有基本認知
### 架站 / SA 相關
會一門程式語言,而且對 Linux 夠熟之後,就可以嘗試架站了。
克難一點是可以用自己的機器架,
不過建議還是去租雲端的機器(例如 aws, gcp, azure)
雖然有可能要花錢(免費的方案不是速度很慢就是不能用太久),
但有 public IP 和 24 小時不停機就是方便,也能學到更多東西
我個人很推用架站來學習,因為在過程中可以學到:
1. 處理網址要了解 DNS, IP, 域名的概念
2. (如果是雲端環境) 學習如何 ssh, live in terminal
3. 設定 Web Server (nginx, apache, etc.)
4. 寫網站前端(http, css, js)、後端(python, go, etc.)
5. 想要一個域名、一台機器但對應到多個網站時,
如何設定 Reverse Proxy 和 VM/Docker
6. 跟第三方簽 certificate 設定 HTTPS
7. (如果要寄註冊認證信) 裝 Email Server (SMTP, Reverse DNS, DNS Server)
8. 在 Server 上 Debug
9. 監控網站流量、機器狀態
至於網站要寫什麼,如果沒有想法可以往購物車或需要註冊登入的網站去發想
新手建議先從前後端混合的框架開始寫(例如 Python 的 Django),
比較不需要太多 JavaScript 的知識
也可以偷懶不寫程式碼,架 WordPress 或跟會寫網站的朋友合作,
但學到的東西就會少很多,也容易淪為純 Ops
### CI/CD
網站有雛型之後,慢慢的會開始覺得本機開發到要更新 Server 的程式的流程很麻煩,
特別是在頻繁更新和 Debug 的時候,
這正是 DevOps 要解決的主要問題:縮短 Developers 和 Operation 的距離
具體的解決方式便是引入 CI/CD 的 Pipeline
CI/CD 簡單來說即是讓程式碼的 build, test, deploy 自動化,
使得 developers 只要 push 到版控工具(github/gitlab, etc.),
後面就有機器自動的更新 server 的程式
有滿多工具可以做到 CI/CD,
新手若無頭緒我會建議使用 GitLab 內建的 CI/CD,
結合他們自家的版控功能做一條龍
也可以看自己擅長的語言決定用 jenkins 或 drone 或其他工具,大同小異
如果用 GitLab,推薦自己架一個 GitLab 和 Runner (跑 CI 的環境) ,
有人寫了很方便的 docker-compose 可以一行架起來
### 容器(Containers)
隨著網站規模愈來愈大,可能會在這台機器上架好幾個網站,
gitlab, blog, prometheus 等等,
這些服務都建議盡量容器化用 Docker/Docker-compose 跑,
過程中會對 Containers 比較熟
如果有興趣也可以玩 Kubernetes 或類似的容器管理平台,但 k8s 水很深,慎入
### 寫小工具 / 接觸開源
如果前面的部份都摸得差不多了,可以加強 Develop 的程度,
去多摸一門語言,或是深入研究本來會的語言的特性、OOP
也可以嘗試寫一些小工具,例如爬蟲、middleware、metrics exporter 等等
同時在這個階段儘可能的去接觸開源,一開始會覺得挫折、看不懂是難免的
對規模較大的 repo 欣賞它的架構、規模小的 repo 嘗試去看懂裡面的 code
廣泛閱讀 open-source 的專案、技術文章,是這個階段進步最快的方式
### 以專案為本
大量閱讀 open-source 的程式碼和技術文章的過程中,可能會讀到很多沒用過的技術,
但也比較能區分 Clean/Dirty Code,
這時候可以嘗試做比較大型的專案,套用想學習的技術
如果有資源,可以做一個純雲端的專案,畢竟會徵 SRE 的公司很少有不上雲的,
而且雲端服務會提供很多服務,例如 Load Balancer、Auto Scaling 等等
又例如 SQL 要架在 EC2 還是用 Aurora 這些取捨都挺值得玩味的
(個人對 aws 比較熟,所以例子都舉 a 家的)
實習也是做專案的方式之一,如果沒辦法實習,看能不能儘量接觸多人開發的專案,
會對於軟體開發的流程更熟悉,
例如切 staging/production 環境、開發如何切 branch, 開 issue 等等
這裡節錄部份我以前做過的 project 和用到的技術
- LeetCode 爬蟲 (Go)
- Dcard 後端面試作業 (Go/Gin, Redis, Travis CI)
- 做 LineBot CI/CD Pipeline (aws: Route53, EKS (k8s), DynamoDB, S3; Vault)
- PTT 爬蟲 (Go, Goroutine, Channel)
- Blackbox Monitoring (Prometheus, Grafana, AlertManager)
- RESTful API Server (Go/Gin, jwt, ELK,
MySQL, Unit/Integration Tests, Redis, Prometheus,
Vue/TypeScript, azure: AKS, VM)
### 補足 OS、Networking 知識
說得直白一點就是為了面試做準備啦,但這些知識或多或少也會在實戰中用到
## 結論
在面試的 Q&A 環節,我問 ByteDance 的面試官「一個 SRE 應該具備哪些特質」,
他回答我要能臨危不亂、Reactive、Think out of the Box,
後者直翻是跳脫框架,但從面試官的解釋比較像是全局思考,
我個人會解讀出兩種層次,第一個層次是不能僅僅只在意 config 怎麼設定,
而要考慮整個架構的邏輯,包含前面提到的取捨,這才是體現一個 SRE 價值之所在
第二個層次是不要被工具綁架了,DevOps 注重的是流程和文化,
最近體驗到的一個例子是已經有 Python 的自動化的 script,
就沒必要引入其他的 CI/CD 工具,目的有達成最重要,這也是最近小的在努力的方向
除了技術以外,如果想要研究 DevOps 方法論的可以讀 鳳凰專案、DevOps Handbook
上面這兩本是直接與 DevOps 相關,
另外也可以讀一些管理學的書包含高德拉特的目標、第五項修煉,或是精實相關的書
SRE 一生都在和複雜系統打交道,也可以看看反脆弱和黑天鵝這一系列的書,
會對於一些神奇的方法論(例如 Chaos Engineering)比較理解緣由
不確定以上的內容對看的人有沒有幫助,畢竟還很菜,
如果有什麼問題或指點請不吝提出
個人其他地方常用 ID 是 jameshwc,歡迎大家找我交流
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 192.198.168.41 (美國)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1615535884.A.7C7.html
敏捷/DevOps 的精神就是不斷的回應環境的變化呀~
臨危不亂是講像是服務中斷時,你能不能頂住壓力,找出問題的癥結點
Reactive 講的是敏捷,能不能隨時因應環境的變化而行動,而不是僵固的維持本來的計
畫,同義詞是 responsive
※ 編輯: IcecreamHsu (49.216.170.213 臺灣), 03/13/2021 10:35:01
... <看更多>