第 12 期 - 有錢沒錢,發摟 StarBugs 好過年!

本週專欄

密碼都放 Vault 裡了,然後呢?!

HashiCorp 推廣 Vault 一直不餘遺力,自己也從兩年多前用到現在,畢竟撇開企業方案不談,開源專案好像也只有 Vault 可以用;而這塊市場自己覺得目前還算是在推廣階段吧,依然處於積極建立大家對於 Credential 保管應該要有的觀念和危機意識;所以網路上可以看到的教學都是把 Vault 用最危險的 Dev 模式跑起來,然後把重點擺在如何讓應用程式可以取得帳號,密碼或是 API Token…等敏感資料,但是對於 Vault 要如何管理跟保護的教學好像就不太常見了,所以此篇文章來野人獻曝自己兩年多來維運 Vault 的一些小經驗,分別從網路日常維運監控日誌等不同層面來討論,但最後當然不免俗還是會提一下如何跟應用程式做結合

神 Q 超人

探討單元測試和整合測試的涵蓋範圍

剛開始接觸前端測試的時候,常常搞不清楚整合測試和單元測試的差別在哪裡,尤其是單元測試中對單一行為的描寫,更是讓人感到模糊,難到只要測試案例跨了類別就不算單元測試嗎?一起看看文章怎麼解釋這兩者之間的差異。

A Series of My Unfortunate Mistakes (When Writing Tests)

在做單元測試的時候,最怕寫出糟糕又脆弱的測試,導入測試已經要花上一筆時間了,如果又因為測試案例增加開發的成本那就太得不償失了,本篇文章用實戰的方式,一步一步告訴大家什麼 5 點不正確的單元測試。

The Best Whiteboard Interview Advice I Ever Received

不曉得大家在各種面試的關卡中,都會如何應對白板題?也許你會緊張到不知所措(像我一樣),或是一時間腦袋空白不知道該如何是好(這也是我 😂),但除了尷尬地站在白板和面試官中間用力地在腦中思考外,你還能做更多的事情!本篇文章的作者給了幾點對於面對白板題的建議!

Larry Lu

Speed Up JavaScript Array Processing

雖然原生 JS 提供的 mapfilter 等等 method 很好用,但在 Array 太大時可能會造成效能大幅降低,如果不想降低可讀性但又想寫出高效能的程式碼,可以考慮用 RxJS 把 Array 轉成 Observable,再用 RxJS 的 method 來進行處理

Go-tcha: When nil != nil

這是我在 Golang 的 Telegram 群組看到的,想不到 Go 裡面的 nil 有可能不等於 nil,而且 nil 竟然還有分型別,這 feature(bug) 真的是很神奇

Your first CLI tool with Rust

Rust 是一個系統級的程式語言,本身沒有太過肥大的 runtime,所以很適合用來寫 command line tool。作者在這篇文章中用 Rust 寫了一個 cat 指令,想學 Rust 的話很建議看看,比看官方的語法教學有趣多了

LukaJoJo

Code-it Notes: Create Your Own!

來建造你自己的 Code-it 程式小抄!幾個月前打造了一個原型,來幫助自己更好的理解一些我永遠會忘記的 JS 方法。這個概念很簡單,如果我需要他,我就會創造一個 Code-it 的小抄。用自己的話寫下來,可以讓你更了解程式內部是如何運作的。

The dangers of async/await

async / await 的危險。在幾個月前,我作為一個顧問,在重寫大型系統的時候,我體會到 async / await 事實上常常被很多不必要的非同步和和平行運算上,舉例來說這是一個 Vue Code Snipet …。

Django Admin Dashboards - Open-Source and Free

在這篇文章中我會展示一大堆的由自動化工具與 Django 所打造的免費 Web App。工作流程已經在我以前的文章提到。如果你是初次看到這篇文章,我用簡單的方式來說明這個 workflow …。

smalltown

YAML 工程師們!你還在用 Helm 產生 YAML 檔案嗎?!

工程師們!你還在用 Helm 產生 YAML 檔案嗎?!此篇文章勸大家不要再使用 Helm 來產生管理 K8S 資源的 YAML 檔案,因為它只是借用 Go Templating Engine 來建立 YAML 檔案,所以產生的檔案是不是正確的,其實它不知道也完全不負責任,應該要另外用其他的工具來管理部署 K8S 應用程式的 YAML 檔案才對,大家覺得呢?!

  • 使用 sed (展示用,也不建議)
  • 使用 yq
  • 使用 Kustomize
  • 直接寫程式碼引用 K8S 的相關函式庫產生
  • 使用如 Cue, jk, jsonnet Dhall, Skycfg 等工具

給你滿滿的 Prometheus 大平台

根據 Google 日前的研究指出大型組織正面臨處理爆炸性數據量的問題,可以將其歸類為 Reporting 和 Dashboard 跟 Time Series Monitoring…等,而在處理這方面問題的開源專案中,又以 Prometheus 最為有名,而假如只是要將其部署在一個 K8S Cluster 內的話相當的簡單,可以使用 Prometheus Operator 就輕鬆辦到,但假如像是 Cloudflare 這種在 2017 年就運行了 177 個的情況,那管理起來就不太好玩了,所以要如何管理大規模的 Prometheus 呢?!這篇文章介紹了四個解決方案:

  • Thanos & Cortex: 在解決問題的面向上,這兩個還滿雷同的,Cortex 的行為比較像一般傳統的 SaaS 監控系統將所有的資料往同一個地方丟;而 Thanos 則比較沒那麼集中化,主要是在幫忙每一個 Prometheus 去做資料處理,這兩種不同的做法會導致在查詢的時候必須要使用不同的技術實作方式,比較有趣的是這兩個解決方案都利用 Cloud Provider 提供的服務來儲存長期的資料 (Thanos 可以用 Amazon S3, Azure Blob Storage 跟 Google Cloud Storage…等,Cortex 則是使用比較昂貴的 NoSQL 服務如 AWS DynamoDB 或是 Google BigTable)
  • M3DB: 架構上比較像是 Thanos,不過根據 Uber 的說明,他們頻繁地需要去抓取比較舊的歷史資料,在採用 Thanos 的情況下,去 object-store 拉取資料的速度太慢了,而且資料在 Public Cloud 跟他們的 Private Cloud 傳輸的過程中產生的成本也相當驚人,所以才會有這個專案的誕生,使用它來儲存 Prometheus 的資料
  • VictoriaMetrics: 就像前面幾個解決方案一樣,VictoriaMetrics 的創造者一樣面臨了成本與效能問題,而這個解決方案的靈感來自於 ClickHouse (一個新的資料庫系統,擁有厲害到令人印象深刻的效能表現),根據 VictoriaMetrics 團隊的 FAQ 可以發現,他們提供了低運行成本與良好的開發維運體驗,而且似乎有某些 Cloud Service 採用其服務

多麼痛的領悟~ 從 Backend 轉成 Frontend 工程師

腦中有聽到歌聲的代表有一定年紀了👴👵😂 此篇文章的作者分享自己從很純的 Backend 轉職成 Frontend 的心路歷程 💪 🔥👊

  • 不像後端工程師聚焦在資料結構,資料庫的結構和效能,程式碼架構,強大的 API;而是會去注意使用者介面,衡量使用者體驗,嘗試去設計和改善 App 的流程來改善體驗
  • UI First!變成先從 UI 的層面去考量,譬如使用者會去按哪些按鍵,並且如何跟 UI 元件互動,然後再根據這些想法去設計合適的 Backend 結構和資料庫
  • 開始思考 UI 開發的重複利用性,譬如有一些元件可以在多個頁面重複使用,推薦可以使用 https://bit.dev/
  • 學會如何把想法轉換成 mockups
  • 瀏覽器和 Client 端的效能調校,學會如何使用暫存,譬如:localStorage,最佳化 JavaScript 的壓縮,是要使用 webpack 或是動態載入 script
  • 學會如何建立 Responsive 的網頁好讓在各種不同尺寸的裝置上顯示
  • 體會到 SEO 的重要性
  • 要把 CSS 學好,不然應該很難存活
  • 不要過度依賴前端框架避免程式碼到後來很難維護
  • 開始想要多學一點關於設計師的技能,譬如 Adobe Photoshop

StarBugs Weekly

StarBugs Weekly 由一群不寫文章就會想要亂花錢,但是又沒有那麼多錢,只好繼續寫文章的開發者所創立。
內容包含 Web 前端、中端、後端、DevOps、產品開發、精實創業,一切跟產品有關的知識,都是我們的守備範圍!

Curators:

  • @GQSM - Hi!我是神 Q 超人,一個先衝再說的男人。
  • @Larry850806 - 我是 Larry,傳說中的 0.1 倍工程師!
  • @LukaJoJo - 一名全身都是死角的工程師。
  • @smalltown - 熱愛鑽研各種可以提升雲端服務品質及增進團隊開發效率的開源技術

Feedback

想看什麼內容,告訴我們! 點我回饋意見