[前端系統設計] Dropbox 如何優化前端系統,打掉累積 13 年的技術債
近年來前端面試中,也越來越常會考前端系統設計;只是前端系統設計的資源相對比較少。這週看到前陣子 Dropbox 發的一篇《How Edison is helping us build a faster, more powerful Dropbox on the web》談到 Dropbox 如何打掉累積了 13 年的技術債,優化了整個前端系統。讀完覺得受益良多。
在 Dropbox 剛創立時,核心產品是桌面應用程式,而網站只是用來做產品介紹用的。然而隨著瀏覽器、網頁開發技術演進,Dropbox 開始打造網頁應用程式。時至今日,幾乎什麼功能都可以在網頁應用程式實踐,也讓 Dropbox 非常認真看待網頁應用這個領域。
而要打造出效能高、好維護的網頁應用程式,需要有相對應的系統來支持。這篇文章中,Dropbox 從全局觀的角度來談他們在新系統的設計考量點,當中談到他們如何重構架構來加速網頁的加載速度。此外也談到他們如何透過把前端與伺服器端解耦,來提升前端開發者的開發體驗與生產力。
不論你是正在準備前端系統設計面試,或單純想透過實際案例,學習如何從系統的角度看前端,這篇文章都相當值得你花時間一讀。
[後端系統設計] Netflix 如何在遷移高流量系統時避免停機
在系統設計的面試題中,經常會有追問「如何遷移系統」。Netflix 的團隊在他們的官方技術部落格中,發表了《Migrating Critical Traffic At Scale with No Downtime — Part 1》分享他們實際遷移的經驗。
對大型且複雜的系統來說,通常遷移系統意味著要處理無數個子系統與伺服器。在過程中,要是有環節出錯,可能導致連環的錯誤,進而影響到使用者。對於 Netflix 這種講求高可用性的產品來說,影響到使用者,哪怕只是幾秒鐘,也將可能造成巨大的商業損失。
Netflix 團隊把遷移的過程拆分成兩個階段,第一階段是針對功能正確性、可擴展性,以及效能問題,確保新系統有足夠的強韌性;第二階段則是在實際遷移時,確保可能的風險能有對應的處理方案,以及有相對應的指標來監控。
Netflix 團隊具體採用的做法是回放流量測試 (Replay Traffic Testing),也就是複製在生產環境的流量到另一個路徑,然後在複製的版本中進行更新。這樣的做法可以完整模擬生產環境的狀況,但同時又如同有個沙盒環境可以測試,所以不會影響到實際的生產環境。
在這篇文章中,他們分析了為什麼在評估多個方案後,最終採取這種策略。特別推薦大家可以讀他們的分析,因為在選擇技術方案,往往要面對許多取捨,不論在面試與現實工作中,你需要能夠說明為什麼你選 A 方案而不是 B,這篇文章的分析脈絡很值得參考。
[軟體業趨勢與職涯] 優秀的初階工程師該具備哪些特質?
前陣子看到 GitHub 上超過九萬顆星的 Tech Interview Handbook 作者 Yangshun Tay 從 Meta 離職了。身為前 Meta 的 Staff Engineer,他在《How to have a Successful Software Engineering Internship》一文當中分享了在他帶過這麼多實習生中,特別優秀的實習生都具備哪些特質。
這篇文章不只適合實習生看,剛畢業的初階工程師,甚至想要邁向資深的工程師都值得花點時間讀。想要進 Meta 這類大廠已經不容易,在 Meta 中的頂尖又更不容易。假如你能在工作上展現這些特質,相信在供稱職涯上會走得更順。
簡言之,他談到一個合格的實習生被預期做到能獨立作業、主動提案、積極溝通工作的產出,以及時尋求反饋並以此進步。光是要達到這些,就已經不容易了。然而,要被認為優秀,還需要更進一步。
他提到,優秀的實習生要做出超乎預期的成果,有些頂尖實習生的產出甚至好過正職初階工程師;甚至有做完被交派的任務後,主動去幫忙其他項目。此外,頂尖實習生不只讓別人幫自己看程式碼,也會主動幫忙 code review,甚至幫忙重構既有的程式碼。
在文章中,他有針對這些點,提供更細節的解說。推薦有志成為卓越工程師的人,不僅讀這篇文章,也可以試著在工作上具體力行。
ExplainThis 文章更新
《後 ChatGPT 時代「獨立思考」至關重要》:ChatGPT 一直以來都有一本正經地說瞎話的特性 (又被稱為幻想 hallucination)。在這篇文章中,我們分享了可以如何透過簡單的思考架構,以獨立思考的方式與 ChatGPT 互動,在獲得 ChatGPT 好處的同時,避免被誤導。
《後 ChatGPT 時代,寫程式這件事將要滅絕了嗎?》現在 AI 能幫忙寫程式後,工程師還有工作可做嗎? 前哈佛大學電腦科學系教授 Matt Welsh 認為在 AI 時代,雖然人寫程式這件事將會滅絕,但不代表人就沒工作做。工程師轉型是必然的,只是該怎麼轉? 該培養什麼能力? 這篇文章將會總結他提出的觀點,以及為什麼他這麼認為。
一些值得花些時間看的資訊
最近兩週有非常多的前端會議,大家一起當追劇一樣看個過癮吧!
其他非常推薦一看的資源
PCMan 的演講《好好的醫生不當,你有事嗎? (2023 台南一中職涯講座 / 醫學 vs 資訊職涯選擇)》:有在用 PTT 的人,應該都知道 PCMan 前輩,他從醫生轉職成軟體工程師,現在任職於 Google。這個講座談到他轉職的思考點,很推薦一看。
Matt Pocock 推出免費的《React with TypeScript》課程:Matt Pocock 是 TypeScript 教學界中,榜上有名的好老師。先前他已經推出一門《Beginner's TypeScript》的免費入門課,這次則是公開免費的進階課程,教你如何在 React 中善用 TypeScript。我個人很喜歡這個課程的設計,概念講解搭配互動式的練習,讓你夠從實作中掌握 TypeScript。
《Redis 與作者 antirez 的故事》:每個新技術的出現,都有其相對應要解決的問題。從歷史的角度回頭看,會更能理解為什麼我們要用現在習以為常的工具。現在幾乎所有網路服務背後都有用到 Redis,但你知道 Redis 是在什麼脈絡下被發明? 當初是要解決什麼問題? 近十年來又有什麼演進嗎? 這篇文章用很有故事性的方式帶你了解。
Bun 推出 Bun Bundler: Bun 是一個以效能著稱的 JavaScript 執行環境,最近他們推出了自己的 bundler,評測起來打包速度比 Webpack 5 快超過兩百倍 (Webpack 5 要 38 秒完成的,Bun 0.17 秒就完成)。雖然目前還在 beta 版本,但值得持續關注。
ExplainThis 出書了!
以上是這期的全端雙週報,感謝閱讀到最後的你。這邊也想跟大家分享,ExplainThis 團隊出書了!我們的新書《ChatGPT 指令大全與創新應用》將在 5/25 上市。目前已經開放預購,假如你有興趣全面性了解 ChatGPT,並且學習如何實作基於 ChatGPT 的應用程式,千萬不要錯過了(預購連結在此)。
如果你喜歡我們的內容,歡迎與可能感興趣的朋友分享: