第 141 期 - 沒測到 Bug 反而覺得怪怪的

本週專欄

Consistency between Cache and Database, Part 2

大家好,這週的專欄是 Starbugs Writers 吳俊廷 所分享的 「Consistency between Cache and Database, Part 2」

在上一篇 Consistency between Cache and Database, Part 1 的文章中,詳細地說明了 Cache Expiry 跟 Read Aside 這兩種 Caching Pattern,而在這邊有關於 Cache 的系列文章會一口氣把 Read Through, Write Through, Write Ahead 和 Double Delete 這四種 Caching Pattern 也都交代清楚

希望透過此系列文可以讓大家對於解決 Cache 和 Database 間資料的一致性有更深一層的了解,知道為什麼當對於資料一致性要求越高的話,設計出的系統就會越複雜!

前端開發

Micro-Frontend—Why and How?

微前端的概念類似於微服務,我們可以將整個應用程式分解成更小的應用功能,這些功能可以由各個團隊自主開發,如此一來就能夠讓不同的團隊在不各自影響的狀況下進行開發。這篇文章給了很好的入門觀念和實作方式,如果對微前端架構有興趣的話,可以撥空看一下,並跟著實作!

Applying SOLID principles in React

SOLID 在軟體開發中,是非常常看到的設計原則。作者在文章中分別介紹了 SOLID 的意思,並且在某些原則上用了 React 的程式碼範例幫助理解(只少了 Liskov),但是文章的範例都很簡單!就算與 React 不熟也可以讀讀看喲!

JavaScript Design Patterns – Explained with Examples

我本身算是很喜歡在遇到問題時,使用設計模式去做重構或是思考,但是 JavaScript 畢竟不是 OOP,因此有些設計模式的觀念都再要自己轉換到 JS 中,這時候如果有篇用 JavaScript 為例子講解設計模式的文章,就會覺得挖到寶了趕快來看看,如果你們也一樣的話,就快點進文章中吧!

後端開發

7 Best Practices for Speeding Up Code Reviews

Code Review 可能會很痛苦,軟體開發工程師經常會抱怨 Review 的流程緩慢,導致其他相關的任務也跟著被延遲,而且也造成自己在新開的 PR 和下個工作任務之間來回切換;Review 出來的結果也可能會充滿吹毛求疵的回饋,這對所有參加 Code Review 的人來說都是很糟糕的體驗

甚至有人建議將 Code Review 直接取消,不過這種作法可能對新創小公司還適合,但作者認為這樣的做法不適合所有的組織,尤其是企業級的大公司,所以作者想要透過這篇文章提出七個關於 Code Review 的最佳實踐,PR Submitter 和 Reviewer 在 Code Review 的過程有更好的體驗

pocketbase

PocketBase 是一個開源的 Go 後端框架,可以用來構建後端應用,他由以下元件所組成:即時訂閱功能,檔案和使用者管理,方便的管理員 UI,和 REST-ish API,Client 端 API SDK,讓開發者可以輕鬆地開發後端應用

tproxy

當作者在開發後端服務和 go-zero 時,常常會需要去監控網路流量,例如監控 gRPC 何時需要連線或是重新連線,監控 MySQL 的 Connection Pool 有多少,以及監控目前有多少的 TCP 連線,這些都是很麻煩的事情,因此作者想要提供一個簡單的工具,可以讓開發者即時監控這些網路相關數據,專注在程式邏輯的開發上面

系統設計

CAP定理101—分散式系統,有一好沒兩好

最近 Larry 我在找工作,所以又重新讀了很多基礎的理論,意外發現這篇很不錯的文章。這篇從為什麼會出現 Partition 開始講起 CAP 定理,一步一步探究為什麼 CAP 三者不可能同時被滿足,最終再解釋 eventually consistency 這個妥協後的解法。

Unique Id generation in distributed systems

你有想過在分散式系統中,如果讓不同機器生出不同的 ID 嗎?因為 UUID 實在太長了不符合這篇文章的情境(要讓使用者輸入 ID),所以作者參考了 Twitter snowflake 的設計理念,設計出自己的一套絕對不重複的 ID,很有趣的一篇文章。

如果要你實作一個系統,用來統計近 24 小時內 Instagram 上最熱門的十個 hashtag,那你會怎麼做設計呢?如果想不到的話可以來看看這篇文章,他從資料量跟使用者人數開始進行分析,並且提供了一個簡單(好像也不是那麼簡單?)的解法。

DevOps

On Coordination Costs: Moving A Couch, And Painting A Room

作者探討如何減低組織內的合作成本,以生活例子舉例讓讀者更好理解。第一個方法是以時間做切分,一開始先把令人分心的事物先移開,之後專心做主要任務,結束後再把分心的事物歸回原位。第二個方法為以空間做切分,其用意跟第一個方法無異。雖然本文因生活例子做出發看起來這樣的合作理所當然,但實際上在組織裡困難許多,光是看文章下的留言就略知一二。

Why More Incidents Are Better

要達到系統上完全沒有事故是不可能的,事實上,有事故反而才是好事,這代表著學習的機會、此次事故有可能避免更糟糕的情況、合作修復事故可以增進團隊文化、修復事故讓 SRE 團隊在組織更有價值。

How to secure Kubernetes Ingress?

這篇示範 Kubernetes 以 Ingress 接受流量時怎麼做 HTTPS,或許對許多人而言是基本功,不過 Kubernetes Ingress 實踐 SSL/TLS 有很多做法,甚至每家 cloud provider 都整合他們自己的做法,這裡提供不依賴 cloud provider 的做法讓大家參考。

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 粉絲專頁 與我們聯繫。