第 159 期 - 禮拜六就要選舉了,不知道該投給誰?!

本週專欄

關於消息的三層語義:以 RabbitMQ 為例

大家好,這週的專欄是由我們 Starbugs 的新 Writer Ken 所帶來的 「關於消息的三層語義:以 RabbitMQ 為例」。這篇文章跟上週的專欄都是在談在服務之間傳送消息時,要如何做到「只進行一次處理」,不過跟上週比較不一樣的是,今天這篇有實際以 Go + RabbitMQ 的程式碼作為範例,如果對於概念已經瞭解了,想看看在 RabbitMQ 中怎麼實作的話可以讀一讀這篇~

前端開發

CSS Best Practices: 16 Ways to Improve Your CSS Skills Quickly

看了很多關於 JavaScript 的 clean code,也該來看看如何把 CSS 也寫的一樣乾淨且容易維護吧!文章內提出 9 點可以寫出好 CSS 程式碼的 points:

  • 讓你的 CSS 是可閱讀的
  • 訂定一些規則,統一 CSS 的編寫格式
  • 想辦法處理多餘的程式碼
  • 避免使用 !important
  • 考慮直接使用 Framework
  • 善用 reset CSS 消除不同瀏覽器間的設計不一致
  • 讓網站可被更多群族的使用者使用
  • 避免在 Wordpress 中編輯 CSS
  • 最後提供一些關於 CSS 最佳實踐的提示

JavaScript Debounce vs. Throttle

Debounce 和 Throttle 都是為了處理網站效能而出現的技術,只要網站效能處理得好,也就能提升使用者的體驗!在這篇文章中會去比較 Debounce 和 Throttle 兩者有什麼不同,以及為何需要他們!

Learn Modern JavaScript Fundamentals in 7 Hours—Free Course

用 7 個小時學會 JavaScript 的基礎知識,作者很佛心的為每一個段落的知識點標記時間戳,大家可以找到自己有興趣的章節觀看就可以了,這七個小時的影片裡面包含了基本的 JavaScript 的基礎、資料結構、Web API 和非同步的 JavaScript 等等,推薦給自己一點時間好好學習或複習那些可能遺忘的知識吧!

軟體工程

GitHub stars won’t pay your rent

現在很多的軟體架構跟解決方案之所以能這麼成熟,是因為有很多無私的開發者花自己的下班時間貢獻給 Github 上的開源專案,但這些開源專案的作者、貢獻者卻鮮少能獲得回報,而且做久了甚至會被覺得是理所當然(像是會有人一直開 issue 說:這個 bug 怎麼還沒修好啊!?)。所以希望大家在使用這些開源的 library、Framework 時能夠更友善一點,如果行有餘力,也可以少喝杯飲料,花一點錢錢支持他們~

The Architecture of a Modern Startup

如果你是一間新創公司的 CTO,正準備要開始設計產品的系統架構,那有幾個關鍵可能是你必須要先考慮的,譬如說公司的產品是否要用 Kubernetes、要有 Staging 環境嗎?要用哪個雲端平台等等,這篇文章會帶你了解一些新創公司在設計架構時,需要考慮的一些問題,讓你更有方向的做出一個好的系統。

How we reduced our annual server costs by 80% — from $1M to $200k — by moving away from AWS

這篇文章記錄了一家公司是怎麼透過搬離 AWS 來節省高達 80% 的花費,不過我個人覺得重點不是省了多少錢XD,而是他們是怎麼做到的。譬如說他們在真的開始搬家之前是怎麼進行規劃、在逐漸搬過去的過程中又是如何對各個服務進行測試,這些都是很值得學習的地方。

DevOps

5 New CNCF Projects To Watch In 2023

介紹 5 款還不錯的 CNCF 新專案,分別為:

  • Teller,更安全的把敏感資訊避免錯誤地使用在 code、shell 或檔案裡,支援 Vault、Consul、AWS Secret Manager 或 Google Secret Manager 等等
  • OpenCost,計算 K8s 所產生的費用,前身是 kubecost
  • OpenFuction,在 K8s 上建立 FAAS(function as a code platform)
  • External-secrets,讓外部的 secret 存入並且自動同步 K8s secret
  • Clusterpedia,把多個 K8s clusters 的資源以 wikipedia 的方式呈現,可以使用進階的搜尋功能

AWS EBS Volumes gp2 vs gp3, io1 vs io2 which one to choose

AWS EBS 類型的選擇是維運人員該注意的,gp2 和 gp3 衡量過後評估要換的話,gp2 是可以直接不用關機改成 gp3 的,只是要注意其會根據容量大小決定修改時間,而 io1 改成 io2 也以此類推。

Chaos engineering 101: Principles, process, and examples

Chaos Engineering 為現今許多大型組織的解決方案,本文簡單介紹一下其原理、工具、原則和流程、扎實的實際範例和如果要鑽研如何開啟下一步。

IaC

The top programming languages

從最近 GitHub 發布的統計結果發現用來達成 IaC 的 HCL (HashiCorp Configuration Language) 成為過去一年來成長最快的語言,主要是由於 Terraform 此工具的普及,加上自動化管理與部署基礎設施成為被大家廣泛接受的最佳守則,雖然有人覺得他其實不算是一個語言 (Reference),但不可否認 HCL 在基礎設施的管理幫助大家節省不少時間與降低人為疏失

Infrastructure as Code’s Broken Promises

此篇文章的作者常常聽到 Infrastructure as Code 的好處就是採用之後可以解決掉所有管理基礎設施的問題,比起手動管理來的更簡單,寫出來的 IaC 可以被拿來測試,除此之外也可以節省更多的時間;但作者覺得總是有不預期的緊急事件會發生,環境會發生偏移,綜合他自己的經驗來說,基礎設施對比於一般靜態的應用程式就像是活著的生物一般,讓他覺得導入 IaC 之後人生也沒有變得比較簡單,要維護 IaC 反而讓一切變得更複雜而且要花更多的時間

留言提出不少正向的看法與建議,希望作者不要放棄 IaC XD

  • 作者對於 IaC 有了錯誤的期待,IaC 並不是要讓任何人的生活變得更簡單,它是要讓基礎設施的管理工作有辦法被重複化,進而變得更可靠,最終提高擴展性
  • 對待 IaC 也需要跟其他的程式語言一樣,你必須要有單元測試和整合測試,而且不要去接受環境偏移的發生,當因為緊急事件的發生不得以手動處理後,你要盡快讓一切的管理工作再次回到 IaC 的管控之下
  • 雖然短期要花費比較多的時間和感到痛苦,但長期來說,你的基礎設施會變得更可靠,更容易被管理,進而讓你的團隊可以更專注在開發新的功能上

5 common pitfalls in Infrastructure as Code

這篇文章作者跟大家分享使用 IaC 時常見五個陷阱,讓大家避免掉這些陷阱,讓 IaC 的管理更加順利

  • Pets vs Cattle: 避免像對待伺服器或是基礎設施的固定資源一般,例如給予特定的名字與 IP;而是要將它們視為可以被快速替換的資源,這樣才能讓你的基礎設施更像是應用程序而不是實體伺服器
  • Virtualized Data Center: 不要把實體資料中心的概念移植到 IaC 來,很多問題是雲端供應商自己要去擔心的,你應該 100% 的虛擬化的去使用它,例如可以使用多個供應商,根據需求來增加或減少資源達到成本最佳化,將服務的負載量分散到第三方服務去
  • Not understanding relation between infrastructure and data: 因為害怕會遺失或是損害資料而導致 IaC 的採用率低下,其實可以透過簡單的分析來得知 IaC 要怎麼安全地應用在有正式環境資料的情境之下
  • Breaking Dev and Ops: 透過 IaC 來打破 Dev 與 Ops 的藩籬,讓他們可以一起合作,擁有持續不間斷且自動化的流程
  • Using IaC as fancy deployment scripts: IaC 並不是花俏的腳本語言,要從 IaC 中獲取最大的好處,就是要嘗試像對待一般的應用程式語言一樣來對待他,例如要有版本控制,它也要有自己的 CI/CD Pipeline

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!
不想漏追科技新聞的人,趕緊把 StarBugs Telegram Bot 訂閱起來 https://t.me/starbugs_weekly_bot (對機器人說 /subscribe 即可)

另外,為了讓 Starbugs 的專欄有更多豐富、優質的內容,我們決定要開始誠徵 Writer 了。如果你本來就有在寫文章,對於文章的品質有要求、而且也樂於分享討論技術,那很歡迎你以 Writer 的身份加入我們。請動動手指頭私訊我們粉專 星巴哥技術週刊,並附上自我介紹跟最近寫的文章,就有機會加入我們唷 🙌

Writers:

  • @HannahLin - 從台灣到矽谷,熱愛前端的工程師女孩。
  • @KyleMo - 雜食性軟體工程師,喜歡的技術我都想學。
  • @Airwaves - Hi~我是 Airwaves,熱愛研究如何造輪子的前端工程師。
  • @Andy - 目標成為用嘴巴工作的工程師,專長為網頁開發以及 K8s。
  • @lazypro - 從 embedded 到 kernel,從 device 上雲端,程式無涯、無法靠岸,軟體的求道者。
  • @ianchen0119 - 5G 領域研究生,同時也是喜歡學習不同領域技術的工程師。
  • @00-talk - 我是 00,脖子痠痛的前端生命鬥士。
  • @Ken - 興趣是符號學的軟體開發者,喜歡探索事物的本質,偶爾會寫點東西。

Maintainers:

  • @GQSM - Hi!我是神 Q 超人,一個先衝再說的男人。
  • @LarryLu - 我是 Larry,傳說中的 0.1 倍工程師!
  • @LukaJoJo - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術。
  • @RicoChen - 熱愛許多技術且努力看透技術的本質,如果有什麼好玩的技術,還請各位歡迎直接找我聊聊。

Feedback

本週呈現主題方式做了一些改變,希望讓讀者能夠更快速精準的找到自己要的資訊。也加入社群活動這個區塊,每週更新社群活動的資訊。如果有任何建議,歡迎私訊 星巴哥技術週刊 FB 粉絲專頁 與我們聯繫。