iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 23
0
自我挑戰組

不前不後,不上不下,一個曾經交大資工書卷的軟體工程師成長之路系列 第 23

黑暗的渾沌:Backend 後端

後端的話 其實就是排除掉前面畫面以外的東西
現在跟前端分開的話
通常就是提供API介面來新增修改新增讀取更新刪除資料,CRUD(Create, Read, Update, Delete)
通常都是透過HTTP走REST的方式
如果需要主動push的話 可能就要透過Web Socket了
所以最大的挑戰就是要如何有效率的去處理大量的request
事情往往不是單純的CRUD而已
資料通常還是要運算的 也就是你的business logic
所以運算的performance非常重要
如何有效率的implement core business logic就是日常的工作了
除了演算法與資料結構以外
取資料的時候對DB的讀取 如果有效率的下SQL
也是關鍵之一
在從大一點角度來看就是如何設計Salable的Service並且動態的分配並運用資源
這有時候會牽涉到DevOps就是

最常見的後端語言通常是兩大陣營
Java (Java EE) 或是 .NET (C#) 居多
這兩者也各自形成很強大的生態系就是
近幾年Go的缺也開始變多的感覺 但還不確定到底如何
通常為了加速的話
關鍵的部分也都還會用C/C++來做就是
最近Rust也有紅起來的趨勢 但我很不熟就是
PHP也是另一大宗

還有兩種需求也算常見
一個就是Python 另一個則是 Node.JS (JavaScript)(或是最近很新的Deno不知道有沒有開始用了)
都有各自的framework
Python最有名的就是Django了吧
想要輕量點的話也有像是Flask這種超輕量
或是Twisted這種event loop的架構

而提到event loop更是要提到NodeJS啦
讓NodeJS其實也滿適合非CPU intensive的task就是
配上Express.js這種也很輕量的框架
也是滿容易就可以寫出簡單的後端API了

通常都拿來快速建prototype
但其實應付一般的流量我覺得也夠了就是
關鍵的部分都可以額外用C/C++來加速
也很容易整合

實作上 memory, disk, network的資源分配議題也都是要考慮的(畢竟server資源有限)
SQL又是一個很多眉眉角角的領域
還有NoSQL要來湊一腳
以及像是message queue等等
還有如何幫助debug的log訊息等等

效能之外
關於RESTful API的設計 如何善用HTTP Method, API的命名
設計出語意可讀可用性又高的API也都是很大的議題呢

當然對背後的infra以及deployment也需要了解就是
這時候就要跟DevOps合作了


上一篇
美好的幻覺:Frontend 前端
下一篇
美麗與邏輯:UI/UX
系列文
不前不後,不上不下,一個曾經交大資工書卷的軟體工程師成長之路30

尚未有邦友留言

立即登入留言