infrastructure as code 優勢及工具選擇

logo

今年在 Cloud Summit 會議上分享『初探 Infrastructure as Code 工具 Pulumi』,主要幾項重點跟大家分享

  1. 什麼是 infrastructure as code 簡稱 IaC
  2. IaC 對團隊帶來什麼優勢
  3. PulumiTerraform 兩大工具比較
  4. Pulumi 價格比較

IaC 帶來的好處跟優勢如下

  1. 建置 CI/CD 自動化 (不用依賴 UI 操作)
  2. 版本控制 (審核避免錯誤)
  3. 重複使用 (減少建置時間)
  4. 環境一至性 (測試及正式)
  5. 團隊成長 (分享學習資源)

內容會偏向介紹 Pulumi 工具居多,如果想多了解,參考本投影片準沒錯

[Read More]

Introduction to Open Policy Agent 初探權限控管機制

logo

很高興可以在 Mopconf 分享 Open Policy Agent。本議程最主要是跟大家初步分享 OPA 的概念,我們團隊如何將 OPA 導入系統架構,及分享如何設計 RBAC 及 IAM Role 架構,底下是這次預計會分享的內容:

  1. Why do we need a Policy Engine?
  2. Why do we choose Open Policy Agent?
  3. Workflow with Open Policy Agent?
  4. What is Policy Language (Rego)?
  5. RBAC and IAM Role Design
  6. Three ways to deploy an Open Policy Agent.

可以參考另外兩篇介紹

如果可以的話,大家可以給我一些回饋,請填寫會後問卷

[Read More]

如何發佈高品質的 Pull Request (簡稱 PR)

code review

除了在公司團隊內負責審核各專案 PR 之外,也在 GitHub 上面提交多個 PR,並且與全世界各地開發者一起共同維護大型專案,一個好的 PR 可以加速專案的進行,且省下多數 Reviewr 寶貴的時間,故我自己整理底下幾點,來確保團隊同事之前有個共同的標準外,也大大降低 Review 時間,提升專案品質。

[Read More]

用 Supervisor 管理系統程式

cover

相信大家都有管理 Linux 主機 Process 的經驗,用的工具也是千奇百種,但是肯定對 Python 版本的 Supervisor 並不陌生,這套工具相當好用,可以監控不同的 Process 狀態,也可以自動重啟。而本篇要介紹用 Go 語言寫出來的開源套件『Supervisord』,作者提到為什麼要用 Go 語言開發此工具,原因很簡單,就是透過 Go 語言的跨平台優勢,寫一套程式,可以直接跑在任何平台,管理者就不需要再為了 Python 環境而煩惱。

[Read More]

NSQ Consumers 處理 Graceful Shutdown 技巧

Imgur

NSQ 是一套即時分散式處理消息平台,目的在於提供大量的訊息傳遞,團隊可以依據不同的任務來設計分散式架構去消化大量的訊息。而我在最近開發了一套開源項目 golang-queue/queue,這套詳細的資訊會再開另一篇進行討論,簡單來說這個套件可以讓開發者使用在單機的 Producer 及 Consumer 架構,使用的就是 Go 語言的 Goroutine 及 Channel,又或者直接搭配 NSQ, NATsRedis Pub/Sub 第三方的系統取代內建的 Channel 機制。而本篇會講在整合 NSQ 要處理 Graceful Shutdown 所遇到的問題跟解決方式。

[Read More]

[竹北美食] 中正西路必吃美食 - 鴨肉麵 + 肉絲炒飯

炒飯

來介紹竹北華興重劃區這邊的美食之一『鴨肉麵 + 肉絲炒飯』,這間店位於中正西路上面,也是唯一一間賣鴨肉的,週末幾乎都是客滿,現場至少都要等 30 分鐘以上,其中最必要吃的就是鴨肉麵跟肉絲炒飯,炒飯記得點大碗的,沒記錯是 90 元,物價會上漲,要吃就盡快吃,另外也可以點一盤鴨肉,應該是 150 元,可以跟老闆娘說要腿的部位,有帶小朋友的,就這樣點就對了,避免肉太硬,小孩子吃一吃說吞不下去,就浪費了。

[Read More]

用 AWS EFS 或 FSx Lustre 加速 Sagemaker AI 模型訓練

cover

前不久寫過一篇『AI 團隊整合導入 AWS SageMaker 流程』介紹如何用 Go 語言整合 SageMaker API。本篇會介紹在訓練 AI 模型前,如何將 Dataset 準備好並整合 SageMaker,過程中遇到什麼問題跟挑戰。團隊提供 AI 平台讓使用者可以上傳自家的 Dataset 搭配團隊內部預設的 Dataset 進行 AI 模型的訓練,最後將模型提供給使用者下載使用,簡單來說,使用者只需要提供 Dataset 並把 AI 訓練參數設定完畢,就可以拿到最後的模型進行後續的整合開發。底下我們探討使用者上傳 Dataset 的流程。

[Read More]

開源專案 Drone CI/CD 平台真的免費嗎?

cover

自己推行 Drone CI/CD 開源平台已經多年,很多人都會問我說,Drone 真的可以免費使用嗎?用在開源上面,或者是導入進公司內部團隊,這費用該怎麼計算呢?好的,本篇就帶大家了解 Drone 用在開源上或是公司內部團隊上需要注意的地方,官方其實有寫了一整頁 FAQ 非常詳細,底下是我整理幾點給大家知道。

[Read More]
drone  golang  git  gitea 

打造最小 Python Docker 容器

cover

現在已經是容器 (container) 的時代,團隊之間合作肯定要打包統一的 Docker Image 來解決環境不一致的問題,但是容器的大小決定了部署微服務的時間,本篇來介紹如何打造最小的 Python 容器。如果你需要跨部門合作,Docker 絕對是最棒的工具,讓大家不用為了環境煩惱。底下透過 Flask Application 來介紹如何撰寫 Dockerfile

[Read More]

AI 團隊整合導入 AWS SageMaker 流程

Flow

團隊困境

如果團隊未來想把機器學習推廣成一個服務,可以讓開發者帶入不同的參數進行客製化的學習,最終拿到學習過的 Model。或是團隊資源不夠,想要使用大量的 GPU 資源來加速 AI Model Training,這時就是要朝向使用第三方資源像是 AWS SageMaker 來進行整合。而在團隊內會分成機器學習團隊,及後端團隊,前者是專門進行資料分析及 AI Model 演算法及程式碼開發,後者則是專攻全部工作流程,從產生測試資料,前置準備,到 Training Model,及將產生的結果發送給開法者,這整段流程會由後端團隊進行串接。所以當我們要用第三方服務時 AWS SageMaker,對於機器學習團隊來說,要將整個環境打包成容器模式,並且符合 SageMaker 所規定的格式,過程相當複雜,而為了讓開發環境統一,我們使用了容器技術 (Docker Container) 來進行 SageMaker 串接,本篇會教大家如何整合 SageMaker 流程,讓機器學習團隊可以專注於 Model 流程開發,而不需要花時間在整合容器技術並符合 SageMaker 格式。

[Read More]