部署服務後,怎麼明確讓團隊清楚知道服務的運行狀況,就像 GitHub 就是提供整體運行的網頁,監控常用的操作指令,像是 Git Operations, Webhooks 或 GitHub Actions 等服務狀況。讓開發者遇到問題的時候,可以即時查看現在狀態做出相對應動作。而類似這樣的線上服務很多,像是 Atlassian 的 Statuspage 或 PingPong 等,更多免費服務可以直接參考 awesome-status-pages。而本篇要介紹一套開源軟體 Gatus,它是用 Go 語言撰寫出來的,非常輕量。
[Read More]使用 pyroscope adhoc 加速找到效能瓶頸
大家在開發軟體時,會快速迭代專案時程跟需求,功能越多,系統就會開始出現效能上的瓶頸,而最快的解決方式就是先垂直擴展,把 CPU 跟記憶體先往上加,但是這是治標不治本,所以之前有推薦大家一套如何在服務執行時,快速找到哪個地方執行較慢,請參考之前的文章『即時效能分析工具 Pyroscope』,Pyroscope 目前支援了很多語言,像是 Go, Python, Java, Ruby, Rust, PHP 及 .Net,如果你想要快速在本地端找到效能瓶頸,請繼續將本篇看完。底下會用 Go 語言實際範例教大家。
[Read More]Go 1.18 generics 新套件 constraints, slices 及 maps
今天看到 Go1.18 終於推出 RC1 版本了,離正式 Release 又跨出一大步了。繼上一篇『初探 golang 1.18 generics 功能』教學後,本次來看看 go1.18 推出三個新的 Package: constraints, slices 及 maps 使用方式。目前這三個 Package 會統一放在 golang.org/x/exp
內。本篇程式碼都可以在這邊找到。
初探 golang 1.18 generics 功能
Go 語言在近期內會推出 1.18 版本,而 1.18 最重要的功能之一就是 generics,在此版本之前,最令人詬病的就是 Go 無法支援多種 Type 當參數,造成在寫 Package 時候多出很多重複性的程式碼,本篇會教大家基礎認識什麼是 generics,及怎麼使用。
[Read More]infrastructure as code 優勢及工具選擇
今年在 Cloud Summit 會議上分享『初探 Infrastructure as Code 工具 Pulumi』,主要幾項重點跟大家分享
IaC 帶來的好處跟優勢如下
- 建置 CI/CD 自動化 (不用依賴 UI 操作)
- 版本控制 (審核避免錯誤)
- 重複使用 (減少建置時間)
- 環境一至性 (測試及正式)
- 團隊成長 (分享學習資源)
內容會偏向介紹 Pulumi 工具居多,如果想多了解,參考本投影片準沒錯
[Read More]Introduction to Open Policy Agent 初探權限控管機制
很高興可以在 Mopconf 分享 Open Policy Agent。本議程最主要是跟大家初步分享 OPA 的概念,我們團隊如何將 OPA 導入系統架構,及分享如何設計 RBAC 及 IAM Role 架構,底下是這次預計會分享的內容:
- Why do we need a Policy Engine?
- Why do we choose Open Policy Agent?
- Workflow with Open Policy Agent?
- What is Policy Language (Rego)?
- RBAC and IAM Role Design
- Three ways to deploy an Open Policy Agent.
可以參考另外兩篇介紹
如果可以的話,大家可以給我一些回饋,請填寫會後問卷
[Read More]如何發佈高品質的 Pull Request (簡稱 PR)
除了在公司團隊內負責審核各專案 PR 之外,也在 GitHub 上面提交多個 PR,並且與全世界各地開發者一起共同維護大型專案,一個好的 PR 可以加速專案的進行,且省下多數 Reviewr 寶貴的時間,故我自己整理底下幾點,來確保團隊同事之前有個共同的標準外,也大大降低 Review 時間,提升專案品質。
[Read More]用 Supervisor 管理系統程式
相信大家都有管理 Linux 主機 Process 的經驗,用的工具也是千奇百種,但是肯定對 Python 版本的 Supervisor 並不陌生,這套工具相當好用,可以監控不同的 Process 狀態,也可以自動重啟。而本篇要介紹用 Go 語言寫出來的開源套件『Supervisord』,作者提到為什麼要用 Go 語言開發此工具,原因很簡單,就是透過 Go 語言的跨平台優勢,寫一套程式,可以直接跑在任何平台,管理者就不需要再為了 Python 環境而煩惱。
[Read More]NSQ Consumers 處理 Graceful Shutdown 技巧
NSQ 是一套即時分散式處理消息平台,目的在於提供大量的訊息傳遞,團隊可以依據不同的任務來設計分散式架構去消化大量的訊息。而我在最近開發了一套開源項目 golang-queue/queue,這套詳細的資訊會再開另一篇進行討論,簡單來說這個套件可以讓開發者使用在單機的 Producer 及 Consumer 架構,使用的就是 Go 語言的 Goroutine 及 Channel,又或者直接搭配 NSQ, NATs 或 Redis Pub/Sub 第三方的系統取代內建的 Channel 機制。而本篇會講在整合 NSQ 要處理 Graceful Shutdown 所遇到的問題跟解決方式。
[Read More][竹北美食] 中正西路必吃美食 - 鴨肉麵 + 肉絲炒飯
2022/01/01 更新漲價後的價格
底下文章內是之前的價格,大家參考看看。另外附上買炒飯大碗的圖片:
來介紹竹北華興重劃區這邊的美食之一『鴨肉麵 + 肉絲炒飯』,這間店位於中正西路上面,也是唯一一間賣鴨肉的,週末幾乎都是客滿,現場至少都要等 30 分鐘以上,其中最必要吃的就是鴨肉麵跟肉絲炒飯,炒飯記得點大碗的,沒記錯是 90 元,物價會上漲,要吃就盡快吃,另外也可以點一盤鴨肉,應該是 150 元,可以跟老闆娘說要腿的部位,有帶小朋友的,就這樣點就對了,避免肉太硬,小孩子吃一吃說吞不下去,就浪費了。
[Read More]