DevOps Day 心得(一)
前情提要: 被同事坑一波,就去參加了今年的 DevOps Day。
全部的心得可能分幾次。 每個 Keynote 大都分為兩部分,議程簡介和心得感想
DevOps Day 心得
Day1 早上
2023臺灣企業DORA關鍵數據大公開
DORA: DevOps Research and Assessment,Google Cloud 後來買下,每年都會發布的指標與報告
ithome 做的大調查,主要是給各公司的CTO填寫,政府機關、企業主管等 早上,是Devops台灣的總結,有IT的薪資(或是說投入金額)
重點:投入IT的金額相對降低,但是DevOps的比例有變高
DORA 指標:
- 團隊開發速度
- 部署頻率
- 更新准備時間,改版交付時間
- 軟體品質和穩定度
- 平均復原時間(MTTR)
- 變更失敗率
全球的發現: 符合高接、菁英的團隊變多了 台灣:去年2022的初階團隊變多,2023拿來與之相比沒有太大意義 總體而言: 跟全球比還是落後一點,
特別發現: 政府機關投入金額非常高,資安相關議題還有雲元生系統建置相關的專案
心得:
因為沒有以往參與的經驗,對這些數字沒有什麼概念,不過DORA的指標倒是可以參考的事項,對於國外,或是受調查的團隊都達到菁英其實還滿驚訝的,不過聽完兩天之後,可以理解我們自己的團隊,與可以達到地團隊的差異。
Ruddy 老師的撈叨
標題是寫人工智慧下的開發者經驗,但有點對不上人工智慧,聚焦在開發者經驗。
重點:
- 雜談現狀:
- 新興 AI 的應用正在 hype 的階段, 接下來會慢慢邁入成熟階段
- AI 時代來臨, 突然有全世界的知識, 你要做什麼?請一定要思考這個問題
加速開發速度?
- 影響Release的速度是什麼:
- 公司的文化
- 誰形成文化? 開發者 Dev
- Dev Experience –> DevX
- 只開發者與執行軟體磣品服務相關的工具、平台、流程和人員之間的所有互動
- 公司提升這些就可以增加 release 更快
DevX
- DevX 理念
- 開發者體驗即是平台 -> DevX平台
- 開發者體驗即是導師制 -> 由 mentoring開始
- 開發者體驗即是學習 -> 新手到專家的途徑
- At last but not least
- 強化開發者社交平台:Git 與開發者模式
改善團隊的開發者體驗
- 不要犠牲品質
- 要形成一個平台來幫助工程師開發
- 有好的共同知識庫
- 有好的團隊、mentor制度
- 降低負荷
- 降低工程師的認知負荷:減少開會等等
- 如果時限已經壓下來,肯定不能完成的話,減少工作量
- Speed Model / 調整組織
- 如何協作: 交付模式 (跨團隊)
- 跟他一起協作(成本超高)
- 寫service API (普遍)
- 引導式:什麼都不要做,用文件(成本最低、但是聽起來最需要好的文化)
- 「專注」對開發很重要
- 提供環境(物理)和流程
因為太多太雜,建議可以看共筆
心得:
- 以talk來說,有點太雜太散
- 減少工作真的是大快我心 XDD,本來以為講者會提出沒有聽過的解決辦法,但就是讓PO去減少工作量
- 降低認知負荷對我是一個新的概念和觀點,讓我重新評估滿多事情
- 我們公司的環境滿不符DevX的,但在我們的團隊內,應該可以想辦法實現部分理念
- 增加文件
- 從各種層面降低認知負荷: 工作量、Deadline、會議
- 持續交流技術、coding mentor協作(PR)
架構師也要DevOps
從沒聽過架構師,酷東西
BizDevOps
- 將業務需求(Biz)加入 DevOps
- 這部分不太深入,可以找其他資源(有另一場講座)
為什麼需要架構師?
- 以零售業為範例,介紹場域內的人物。(引用來源)
- 社群平台+平台->通訊+門市
- 網紅+平台 -> 通訊+門市
- 網紅+購物平台+訂單平台->門市+Uber社群
- 人+場域+貨物
- 因為有上述這麼多的關係,電商、零售平台如何整合這些人?
- 釐清系統(零售平台)該有的範圍以後,建立模型,並且設計系統
- 找到狀態圖:狀態、操作、事件
- 找到角色
- 找到行為
介紹這個職位需要做什麼事
- 架構設計是一開始就要先看到全貌,而不是蓋到哪裡才想到哪裡
- 由商業需求建立技術模型
- 建模的重要性,把所有東西建模
- 把商業抽象化成為模型
- 我的認知:把知識變成模組縮小化
- 建立成模型 → 狀態圖 → 開成spec
- 如何驗證模型:用OOP來建立技術模型
- Model as Code. 把模型 ⇒ 降級、抽象化 ⇒ POC code 才可以驗證
- 大型系統設計的複雜度
- 面對複雜多變的需求,卻又期待 API 規格能穩定長久使用,其實是兩個互相衝突的目標
- 找出背後的領域模型(Domain Model)
- 基本模型: 狀態 cycle
- 進階: 首推 DDD 的方法論
- 為什麼模型很重要?
- 客戶:幫我拿掉一個按鈕
- 工程師:不知道拿掉很麻煩嗎?(可能用了很巧妙的方式達到spec)
- 中間是兩邊 biz model 跟 tech model 的 gap,所以才要交給模型師
- OOP降級法
- 把 remote service 降級成 local service,類似這樣的做法
- 把整個過程(模型)寫成一個OOP
- 要如何系統化的監控
- 系統的監控(CPU, API call)有做了,但是我想要最近1秒的交易量呢?
- 從biz model的角度可以monitor嗎?
- 降級: 維運監控 ⇒ 從CSV報表開始
- 用CSV方式,製作pivot
- 用pivot來模擬維運(Ops)、商業想要看哪些 metrics
- 開發時就預先提出metrics,實作出來
Next step
如果想要成為架構師,可以做
- 會一種語言,前後端、平台、資料庫,隨時做好建立模型
- 熟練 需求 ⇒ 模型 ⇒ 驗證
如果想要這樣的團隊
- 各產品線/部門都要有上述的人才,具備這些技術
- 培養團隊的tech lead,具備模型溝通能力,有能力降級模型,還原成技術規格 → POC
心得
- 這個職位好特別!!! 公司滿需要有這種職位的人,最好可以理解domain 跟工程師的合作
- 但在目前的框架下有點太困難了,因為domain各自持有很重、而且會把原本不是domain的東西製作成只有該單位才可以理解的方式實在是有點難以理解
- 不能有這種職位、但可以借鏡,在完成一個龐大的系統前,應該要有一個人、會議或是團體可以理解全部的需求、並且可以規劃整體的架構才不會造成開發的負擔
- 另外他也有提到 「面對複雜多變的需求,卻又期待 API 規格能穩定長久使用,其實是兩個互相衝突的目標」,這個真的是現在遇到的狀況的完美縮寫
- 最近也面臨需求的問題,有許多biz跟tech的gap,導致很痛苦,團隊也意識到有許多東西是要事前規劃好的,才不會一直改規格,又因為改規格壓迫更多開發時間。架構師是一個可以借鏡的思考方式,可以從 user, biz 角度先找到重要的價值,才不會system design 與 biz model 不和,形成痛苦巡環。
(last edit 10/25)
Table of Content
❮ Typescript
Dec 24,2022