第 150 期 - 你會記得自己曾經寫過多少 Bug 嗎?

本週專欄

Kubernetes Resource Management— 伸縮自在的 Cluster

大家應該都對於 HPA, VPA 與 Cluster AutoScaler 相當的熟悉,但是該如何將他們導入,或是要如何設定才能達到最佳效果?剛好目前公司內開發團隊實際遇過這些問題,所以把相關實戰經驗整理成這篇文章分享出來 💪 也希望大家可以一起來討論更多關於 K8s 的擴展問題 😊

📚 內文先從 K8s 常見資源管理問題開始分析起 (Pod -> Node -> Cluster)
📚 並且先假設所有的 Workload 都沒有設定 Resource Request 與 Limit
📚 接著一步一步推導要如何透過 Default Limit Range, HPA, VPA 與 Cluster AutoScaler 來將資源管理問題一個一個解決掉
📚 同時將自己使用時遇到的設定問題給條列下來,讓想要使用的人可以避開摸索的時間

前端開發

Front-end Testing Principles

Kent C. DoddsReact Testing Library 的作者,他經常會發表各種文章表達自己對測試的看法,而這篇文章整理了之前 Kent C. Dodds 提到的六個測試原則:

  1. Test your software in the same way that your users use it
  2. Avoid testing implementation details
  3. Write fewer, longer tests
  4. Write your tests with ease of understanding and maintainability in mind
  5. Write your tests in isolation
  6. Be careful with mocks

在每個原則下也都有附上該原則的說明和文章連結,算是一個整理起來的總集篇!

React 18 Upgrade Guide and New Features

文章中先是說明什麼是 React 18,也敘述 React 在 17 時遇到的問題,接著就開始介紹 React 18 出現的幾個新功能,而且都有配合上簡短的程式碼講解哦:

  1. Client Rendering
  2. Hydration
  3. Render Callback
  4. Automatic Batching
  5. Transitions
  6. Dropped support for Internet Explorer

JavaScript API Mocking Techniques

有時候需要模擬 API 是為了能夠在與後端討論好資料規格後,先運行一個 local server 串接 API 與 UI 的互動,也有時候模擬 API 是在單元測試時,用來隔離真實的環境。文章中介紹了幾種 JavaScript 裡面常用來模擬 API 的套件,並簡單介紹他們的差別及使用方式。

Blockchain

8 年 PoW 宣告終結 》以太坊簡史:V神、中國挖礦業,與 NVIDIA

這大概是今年區塊鏈領域最大的事情了:以太坊在經過八年的時間後,總算完成了合併,正式從 Pow 轉向 PoS。這篇文章介紹了以太坊的歷史,以及這幾年來全球挖礦業的發展,可以當成故事看看很有趣~

一次搞懂密碼學中的三兄弟 — Encode、Encrypt 跟 Hash

想要搞懂區塊鏈原理,就必須先懂一些簡單的密碼學,這篇我之前寫的文章介紹了密碼學中的三個基本概念:Encode、Encrypt 跟 Hash,並且用簡單的範例來說明。

從0開始架構區塊鏈 系列

「從 0 開始架構區塊鏈」這一系列文章總共三十篇,從區塊鏈的誕生開始說起,一路講到挖礦、共識機制、智能合約等等,這系列文章的內容非常豐富,值得一看。

DevOps

6 Best Practices to Manage Pull Request Creation and Feedback

建立好的 PR(Pull Request,或者也可以說 Merge Request)可以減少開發時間,除了要保持簡單、結構完整且一致性以及做好測試這三大基本要素之外,還建議以下幾點:

  1. 命名時需要點敘述性和一致性
  2. PR 名稱要清楚和描述
  3. PR 的變動越小越好
  4. PR 有爭議時請直接詢問對方,減少溝通時間
  5. 動手做之前先做好功課來避免整個 PR 重寫
  6. 多找一些人審查 PR

7 CNCF Projects For Building Cloud-Native Networks

本篇介紹 7 個用於建立 Cloud Native 類型網路的 CNCF 專案:

  1. Antrea - 建立在 Open vSwitch 上的 Kubernetes 網路
  2. Cilium - 基於 eBPF 的網路、資安和觀測的專案
  3. Container Network Interface (CNI) - 專門用於 container 的 interface
  4. CNI-Genie - 讓多個 CNI plugins 可以在運行時同時存在
  5. Kube-OVN - 適用於大型企業的 Kubernetes 網路構造
  6. Network Service Mesh - 混合多雲架構的 service mesh
  7. Submariner - 可 PodService 直接在不同 Kubernetes cluster 或不同雲之間互連

How Many Nodes for Your Kubernetes Control Plane?

自架 Kubernetes control plane 需要幾個節點比較洽當?以 etcd 做為叢集狀態儲存工具時,2 個節點比 1 個節點還糟,因為很可能發生腦裂的情況,官方建議 3 或 5 個節點,超過 7 個可能有延遲問題。最後作者分別對 3、5、7、9 個節點做壓測證明延遲問題,以及假如有節點壞了,建議先移除之後再增加新的節點;但如果是節點沒壞,先增加新的節點之後再移除舊的。

Microservices

Multi-Cloud Strategies Using Microservices Architecture

如今在架構設計上已經沒有辦法去避免談到 MicroService,特別是如果你的設計為 Cloud 或是 Multi-Cloud Service,而且必須具有模組化與可擴展的特性;在這篇文章中作者會詳細的解釋 MicroServiec,並且進一步討論在 Multi-Cloud 的情境之下如何去設計應用服務。有興趣的人可以透過閱讀這篇文章跟著作者一起透過詳細的例子來了解 MicroService 的各種 Design Pattern

Deployment Patterns in Microservices Architecture

Monolithic 的應用程式通常都是以一個不可分割的單元來設計,部署與擴展,在這樣的前提條件之下要部署應用服務通常是相對輕鬆無痛的過程,不過當今天所面對的為 MicroService 架構時,你會面對許多由不同的語言與框架所建立的服務,這樣一來讓部署這件事情變得更具挑戰性,所以這篇文章想要探討在微服務的架構之下會有哪些部署模式,並且分析不同部署模式間的優缺點

coroot - a monitoring and troubleshooting tool for microservice architectures

Coroot 是一個用 Golang 寫的新工具,他主要想要協助維運 MicroService 的人去監控和除錯,看到他的功能介紹後覺得滿好用的,例如:受益於 eBPF 所以 Coroot 可以將服務之間的拓樸圖給輕易地視覺化,能夠不需要額外 Stroage 成本之下去進行 Log 分析,並且可以將服務在 Public Cloud 的網路拓樸也呈現出來,除此之外,他還可以跟既有的監控工具整合再一起,例如 Prometheus!

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,脖子痠痛的前端生命鬥士。

Maintainers:

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

Feedback

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