1. 程式人生 > >前端程式設計師如何快速轉型全棧工程師(基礎版)

前端程式設計師如何快速轉型全棧工程師(基礎版)

前端與後端的思維專注點很不相同,前端聚焦在如何把內容以視覺化的方式展現給使用者,後端聚焦在如何利用IT基礎設施實現業務邏輯。所以前端參與後端開發時(全棧工程師必備!)首先需要理解後端會做哪些事,其次才是如何才能做好這些事。

所謂“利用IT基礎設施實現業務邏輯”,意味著以下幾個概念:

  • IT基礎設施有哪些?

資料庫一定是最重要的,這裡特指關係資料庫,例如mysql。因為前端所用的資料庫往往非常簡單,瀏覽器或者APP畢竟只服務於一位使用者,而後端的資料庫需要服務於全部使用者,這不是一個量級。在現實世界中,一旦量級發生改變,需要用到的技術就完全不一樣了。資料庫的基本操作ACID、事務、關聯查詢、索引都是完成業務邏輯的必備品。

mysql客戶端

快取也是前端必須理解的概念。後端可以直接操作SATA磁碟,SSD磁碟,記憶體等不同的儲存介質,而這些介質的存取速度差異巨大。CPU操作L1和L2快取只有3個納秒以內,到了L3快取(可以以MB為單位計量了)就得10納秒以上了,而到了記憶體就得100納秒以上,通過網絡卡訪問遠端則需要數百微秒,訪問機械硬碟則要幾十毫秒。為了能夠讓使用者的請求儘快獲得響應,必須使用快取。很少的場景下才會直接編寫快取,通常後端都在使用的快取服務包括redis、memcached等,其中前者使用更多。

  • 如何正確的分析業務邏輯?

UML圖是一個非常好的手段!類圖、時序圖、狀態圖可以幫助後端理清先做什麼、再做什麼、不會漏掉什麼。這是因為後端的程式需要整年的執行不能宕機,而前端是沒有這種要求的。因此,後端必須全面的考慮各種異常情況,防止一個使用者(請求)引起的意外把整個服務宕機,影響了全部使用者。

UML示例

  • 業務邏輯如何與IT設施結合?

瞭解MVC模型!前端有許多模型,例如MVVM等,這些名詞不重要,因為它們的關注點各不相同。對於後端,通常M意味著關係資料庫,所以後端的WEB框架一定圍繞著M進行。我們分析任何一個WEB框架,一定先要看它的資料庫模型,即如何將資料庫中的表、行對映到程式語言中。另一方面,HTTP協議有許多特性,它會導致MVC框架試圖以此解耦,將URL的配置與業務處理程式碼分開。最後,WEB框架由於處理場景的複雜,通常以可插拔的方式將許多外掛序列的組合起來處理一個請求。前端在學習WEB框架時,把握這三點即可快速掌握。

iis舉例mvc

前端做後端時最容易犯2個錯誤:

  • 日誌打得很少

後端的複雜場景會導致bug難以復現(相比前端更難),且一個應用服務可能跑在多個伺服器上,所以error、info、debug等級日誌的輸出顯得尤為重要!沒有日誌,問題很難定位!

  • 資源沒有即用即放!

因為服務是7*24小時執行的,所以一點點資源洩露(如打開了控制代碼卻未關閉)都會被時間放大!最後導致嚴重後果。

後端的程式碼如何更高效?答案一定是演算法!

好的演算法在我看來就是3點:

  1. 不做重複的事;
  2. 充分利用已知資訊或者中間計算結果;
  3. 充分利用IT基礎設施的特性。比如多核、CPU親和性、儲存介質的價效比、網路報文的收發等。

為了達到這一點,我們必須學習:

  1. 演算法複雜度;
  2. 分而治之的思想,這可能是所有演算法思想中最有用的了;
  3. 計算機體系的特點,如CPU架構、網路通訊成本等;
  4. 常用資料結構,如樹、雜湊表、圖等。

本文出現的原因是團隊中有前端同事想在後端試試水,我當然非常歡迎,於是儘量從我對前端的理解上闡述後端開發的要點,或者更準確的說,是後端WEB應用開發工程師的開發要點。全棧工程師的要求高得多,這裡雖然有些標題黨嫌疑,但好在標明瞭基礎版,進階版在好好談談前端轉全棧工程師的其他要求。

(轉載本站文章請註明作者和出處 陶輝筆記 ,請勿用於任何商業用途)