搶救 Terraform State 檔案
Posted on February 14, 2021
| 2 minutes
| 225 words
| appleboy
近期其中一個專案使用 Terraform 來管理 AWS 雲平台,初期預計只有我一個人在使用 Terraform,所以就沒有將 Backend State 放在 AWS S3 進行備份管理,這個粗心大意讓我花了大半時間來搶救 State (.tfstate) 檔案,而搶救過程也是蠻順利的,只是需要花時間用 terraform import 指令將所有的 State 狀態全部轉回來一次,當然不是每個 Resource 都可以正常運作,還是需要搭配一些修正才能全部轉換。
結論: 請使用 terraform import
指令,這是最終解法。
[Read More]初探 Pulumi 上傳靜態網站到 AWS S3 (二)
Posted on February 11, 2021
| 8 minutes
| 1525 words
| appleboy
上一篇『初探 Pulumi 上傳靜態網站到 AWS S3 (一)』主要介紹 Pulumi 基本使用方式,而本篇會延續上一篇教學把剩下的章節教完,底下是本篇會涵蓋的章節內容:
- 設定 Pulumi Stack 環境變數
- 建立第二個 Pulumi Stack 環境
- 刪除 Pulumi Stack 環境
讓開發者可以自由新增各種不同環境,像是 Testing 或 Develop 環境,以及該如何動態帶入不同環境的變數內容,最後可以透過單一指令將全部資源刪除。
[Read More]初探 Pulumi 上傳靜態網站到 AWS S3 (一)
Posted on February 11, 2021
| 9 minutes
| 1840 words
| appleboy
上一篇作者提到了兩套 Infrastructure as Code 工具,分別是 Terraform 跟 Pulumi,大家對於前者可能會是比較熟悉,那本篇用一個實際案例『建立 AWS S3 並上傳靜態網站』來跟大家分享如何從無開始一步一步使用 Pulumi。本教學使用的程式碼都可以在 GitHub 上面瀏覽及下載。教學會拆成七個章節:
- 建立 Pulumi 新專案
- 設定 AWS 環境
- 初始化 Pulumi 架構 (建立 S3 Bucket)
- 更新 AWS 架構 (S3 Hosting)
- 設定 Pulumi Stack 環境變數 (教學二)
- 建立第二個 Pulumi Stack 環境 (教學二)
- 刪除 Pulumi Stack 環境 (教學二)
[Read More]初探 Infrastructure as Code 工具 Terraform vs Pulumi
Posted on February 8, 2021
| 3 minutes
| 490 words
| appleboy
想必大家對於 Infrastructure as Code 簡稱 (IaC) 並不陌生,而這個名詞在很早以前就很火熱,本篇最主要介紹為什麼我們要導入 IaC,以及該選擇哪些工具來管理雲平台 (AWS, GCP, Azure 等…)。觀看現在很火紅的 Terraform 及後起之秀 Pulumi 是大家可以作為選擇的參考,而底下會來歸納優缺點及技術比較,以及為什麼我最後會選擇 Pulumi。這兩套都是由 Go 語言所開發,現在選擇工具前,都要先考慮看看什麼語言寫的,以及整合進團隊自動化部署流程難易度。
[Read More]使用 GraphQL Gateway 串接多個 Data Schema
Posted on February 6, 2021
| 4 minutes
| 745 words
| appleboy
不久之前寫過一篇『從 graphql-go 轉換到 gqlgen』,目前團隊舊有的專案還是繼續用 graphql-go 來撰寫,不過之後需求量越來越大,維護 graphql-go 就越來越困難,故有在想怎麼把 gqlgen 跟 graphql-go 相容在一起,那就是把這兩個套件想成不同的服務,再透過 Gateway 方式完成 single data graph。至於怎麼選擇 GraphQL Gateway 套件,最容易的方式就是使用 @apollo/gateway,但是由於個人比較偏好 Go 語言的解決方案,就稍微找看看有無人用 Go 實現了 Gateway,後來找到 nautilus/gateway,官方有提供文件以及教學 Blog 可以供開發者參考。底下會教大家使用 nautilus/gateway 將兩個不同的服務串接在一起。
[Read More]用 Go 語言撰寫簡單的 Command Line 工具
Posted on December 27, 2020
| 4 minutes
| 755 words
| appleboy
之前介紹了一個開源工具『用 Docker 每天自動化備份 MySQL, Postgres 或 MongoDB 並上傳到 AWS S3』,讓開發者可以快速透過 Docker 方式來備份資料庫,而本篇要介紹我如何用 Go 語言來撰寫 CLI 並且整合 Docker 來實現備份。此工具都是透過各大資料庫官方提供的 CLI 指令 (pg_dump, mysqldump … 等),故大家不用猜想是什麼神奇的技巧。底下來依序介紹整個目錄結構,及我如何實現。
[Read More]Go 1.16 推出 Embedding Files
Posted on December 27, 2020
| 2 minutes
| 397 words
| appleboy
Go 語言官方維護團隊 rsc 之前在 GitHub Issue 上面提出要在 go command line 直接支援 Embedding Files,沒想到過沒幾個月,就直接實現出來了,並且預計在 2021 的 go 1.16 版本直接支援 embed 套件。有了這個功能,就可以將靜態檔案或專案設定檔直接包起來,這樣部署就更方便了。底下來看看官方怎麼使用。
[Read More]用 Docker 每天自動化備份 MySQL, Postgres 或 MongoDB 並上傳到 AWS S3
Posted on December 12, 2020
| 2 minutes
| 382 words
| appleboy
由於備份 PostgreSQL 的指令 pg_dump 需要限定特定版本才可以備份,故自己製作用 Docker 容器方式來備份,此工具支援 MySQL, PostgreSQL 跟 MongoDB,只要一個 docker-compose yaml 檔案就可以進行線上的備份,並且上傳到 AWS S3,另外也可以設定每天晚上固定時間點進行時間備份,也就是平常所設定的 cron job。沒使用 AWS RDS,或自行管理機房的朋友們,就可以透過這小工具,進行每天半夜線上備份,避免資料被誤砍。底下教學程式碼都可以在這邊找到。
[Read More]善用 Go 語言效能測試工具來提升執行效率
Posted on November 2, 2020
| 1 minutes
| 95 words
| appleboy
在 AI 訓練模型前,都需要經過大量的資料處理,而資料處理的速度在整個流程內扮演很重要的角色,寫出高效能的 Parser 能降低整體處理時間,那如何評估程式效能如何,以及如何快速找到效能瓶頸?本議程會帶大家了解 Go 語言內建的效能測試工具,透過 Benchmark 來找出程式效能瓶頸的地方,快速改善及優化,讓整個系統流程更順暢。也會順道分享 Go 在字串處理優化的一些小技巧。聽過此議程相信您對 Go 語言會有更深入的了解,如果你想寫出有效率的程式碼,本議程一定不能錯過。
[Read More]用 GitHub Actions, Drone CI 或 GitLab CI 部署 AWS Lambda
Posted on October 26, 2020
| 3 minutes
| 432 words
| appleboy
最近剛好把 drone-lambda 新增了一些新的功能,也就是可以透過 CI/CD 的方式來更新 AWS Lambda 基本設定,像是 Memory Size, Handler, Timeout, Runtime 或 Role 等 …,趁這機會寫篇教學紀錄如何透過 GitHub Actions, Drone CI 或 GitLab CI 部署 AWS Lambda。這三套部署方式都是透過 drone-lambda 包好的 Image 來進行。底下的程式碼都可以在這邊找到。
[Read More]