2019年9月14日

什麼是後端?跟前端差在哪裡?簡單介紹後端工程師的工作內容!

Photo by Jordan Harrison on Unsplash

在提到網頁開發的時候,常常會提到前端工程師跟後端工程師。前端聽起來也許比較好理解,大概就像是前台、使用者介面吧?多少可以想像的到。但後端呢?後面是指哪邊?螢幕的後面嗎?

當然不是XD

為了釐清大家的一些疑惑,本篇會聊聊前、後端的區別,並針對後端的部分多補充一些資訊,希望對大家有幫助。

前端?後端?

一般人上網的時候,不論是在電腦或是手機上,通常會藉由瀏覽器來瀏覽網頁,像是Chrome、IE、Edge、FireFox、Safari等。

那非常粗略簡單的來說,前端指的就是,使用者在瀏覽器上所看到的一切,都可以稱為網頁前端,像是圖形介面、漂亮的動畫,滑鼠點了會開啟的menu、或是可以輸入帳號密碼的區塊等等。

那所以反過來說,使用者看不到的地方,就是網頁後端嗎?大致上來說,是這樣沒錯XD

所以問題就在於,使用者看不到的地方是指什麼?其實也沒有那麼神秘,就是一些資料跟指令的傳遞、跟背後的動作處理,舉例來說:

  • 使用者在購物網站上,按下購買結帳的按鈕的時候,資料會透過網路被送到後端,藉此告訴後端,使用者買了什麼,要用什麼方式付款。當後端接收到這些資料後,就會開始進行對應的處理,像是自動化地通知倉儲人員出貨、或去跟銀行收取刷卡的款項等等。
  • 使用者進到購物網站上,查看訂單資訊的時候,後端會根據訂單的編號,從資料庫中整理出訂單的資訊後,傳送給前端處理顯示,像是商品名稱、收件人地址、還有商品的配送狀態等等。
  • 在臉書上留言、發表文章後,文章內容透過網路被傳送到臉書的後端儲存下來。當其他人在別台裝置上使用臉書的時候,臉書的後端就會把你的文章送到其他人的裝置上,讓那些裝置上的前端把這些文章顯示出來給其他人看。
  • 或是在訂房網站按下預定按鈕,後端幫使用者保留房間,並通知旅館進行相關的處理等等。
  • ...

也就是說,使用者在瀏覽器上,有很多看不到的動作,都是透過後端默默替使用者完成的。那後端到底在哪裡?其實後端對一個網站而言,就是所謂的伺服器,就是遠方的某一台電腦,跟使用者的瀏覽器透過網路連接在一起。當資料、指令被送往伺服器後,會透過工程師寫的程式碼或其他機制,來作出對應的處理。

因此,我這邊我很粗顯地定義一下:

  • 後端:在伺服器上做的事情。
  • 前端:在瀏覽器上做的事情。

當代在網際網路架構下運行的應用程式,其實就是伺服器跟瀏覽器之間緊密互動而形成的一個生態系。一個網站如果缺少了後端、也就是伺服器的時候,網站是沒辦法正常運作的,可能頁面會缺少必要的資訊,或是點擊了頁面上的某些按鈕會沒有反應。前端也會因為沒有辦法從後端拿到前端所需要的資料,而沒辦法做出正確的顯示。

雖然有些比較簡單或是特殊的網站,是以前端為主,但是大部分情況下前後端必須要緊密配合,才能提供一個完整的網站服務。

後端工程師

那既然本篇的標題是後端,那我們接著就來針對後端工程師來多聊一些吧。

所謂的後端工程師,其實就是負責處理後端事情的人(廢話)。如果要更明確的定義後端工程師的工作內容會像是:

在伺服器上接收前端傳來的資料,進行對應的判斷處理後,傳送適當的資料到前端。

聽起來有點無聊?但其實所謂的進行對應的判斷處理,包含很多事情:

  • 使用者輸入得帳號密碼對不對?
  • 使用者有沒有權限使用這個功能?
  • 這個商品實際上的庫存還夠不夠?
  • 這筆訂單真的已經付款了嗎?
  • 這張優惠券還能使用嗎?折扣後的金額是多少?
  • ...

對一個電商網站的後端工程師而言,平常每天的工作內容,大致上就是在處理類似這樣的商業邏輯

同時,為了滿足這些商業邏輯的需求,後端工程師會需要把很多外部元件整合起來,像是:

  • 儲存所有使用者資料的資料庫
  • 儲存使用者最近看過的商品資料的快取
  • 整合銀行或其他公司的信用卡支付系統。
  • 發送app推播的第三方服務。
  • ...

後端工程師透過整合這些元件,撰寫適當的程式碼,來進行判斷或運算,藉此滿足使用者的商業需求。

雖然這些對使用者來說都是看不到的,可是使用者卻感受得到網頁的反應速度,而當資料有誤的時候,使用者也會知道。

因此知道如何撰寫正確的程式只是基本,曉得在各種情境在,如何搭配各種不同的工具、元件,來滿足使用者的需求,也是後端工程師重要的能力。

除了處理這些商業邏輯,就後端工程師的中長期職涯規劃而言,可能會包含模組、系統之間的互動方式如何設計,像是如何整合這些各式各樣的模組:

  • 會員系統
  • 帳務系統
  • 購物系統
  • 優惠券系統
  • ...

會需要考量到的層面會更多,更廣泛。包含伺服器的效能瓶頸、網路連線的限制等等,要想出好的解法解決這些問題,也算是一個非常有挑戰性的工作。

雖然聽起來後端的工作很多,但就像前端還可以區分成UI、UX、前端工程師等等,在大型網站系統上,後端也是會分工的,像是會有負責資料庫管理的資料庫工程師,或是負責管理主機跟網路的系統工程師等等其他同仁,這些人可以被稱為廣義的後端,他們會協助處理、維運整個網站, 讓後端工程師可以更專注在商業邏輯上,而不用擔心系統的運作狀況。

小結

以上就是針對前、後端,以及後端工程師簡單的說明,希望對大家有幫助囉。