
近幾年後流行講 Fullstack,通常是指工程師的職位和技能。就是形容一些前端和後端都能夠做的人。其實筆者是有點覺得奇怪:他們在大學裡都已經學了前端和後端的工程方法,到職場工作有十多二十年的年資,還在以 Fullstack 工程師為自豪,不是太沒有志氣了嗎?
而且大部份人講的 Fullstack 往往都不是那麼 “Full"。寫一篇講下怎樣才是比較全面的圖畫。
例如以下面這個圖為例:
- http://www.yourApp.com 的前端首先通過 DNS (AWS Route 53 服務)
- 然後到達負載平衡 ELB (Elastic Load Balancer)
- 然後到網頁服務器 (Web Servers),當中有個 ASG (Auto Scaling Group)
- 然後再從 Javascript 或直接到軟件服務器 (App Servers),當中亦是包括了另一套 ELB + ASG
- 然後去到應用 Redis、Memcached 之類的快存服務 Elastic Cache。
- 然後才去到主資料庫。資料庫亦有 Master and Slave 主次之分,亦有多地區備份 Multi Available Zone Backup。
- 然後固態檔案從 AWS S3 (Simple Storage Service) 中取得。
- 亦經過前端快存 AWS CloudFront 來存取。
- 然後後台還有 AWS CloudWatch 之類的日志服務和服務器監控
- 有 AWS SNS 的監控訊息服務
- 有 CloudFormation 配搭 DynamoDB 一起用的自動配置服務。

以上這個才是一個比較齊整的 Fullstack 系統。簡要來說,這包括了很多雲服務的配置知識和技能。而坊間所謂 Fullstack 工程師,往往是沒有雲服務的配置經驗。而他們覺得這是運維的事情。但實際上一套整全、各方面都照顧到的電腦系統,這是個基本的最小配套,所以這是 Fullstack 工程師都應該要知悉的事情。
有些更複雜的系統,是會包括其他例如序列服務 Service Queue;運行 Devops 的 pipeline;自動測試的硬體農場 Device Farm;或需要時才應用的 Spot Instance 之類等等。
而除此之外,工程部門 (Engineering Dept) 位於生產部門 (Production Dept) 的分類之內,生產部門所必需的技能,例如項目管理(e.g. Agile、PMP 等等的方法論)、Devops 運營管理、代碼版本管理(e.g. Git、SVN 等 CVS 系統)、產品管理等等,都是工程人員應付日常工作的必要技能。這些又是否包括進 Fullstack 裡呢?若不,那 Fullstack 的工程師能應付項目管理或代碼管理嗎?
而很多人都忽略了,測試本身也是一套 Fullstack。看一下以下這些只談測試的字眼,我加上了分類:
- 形式:Exploratory Test, Regression Test, White box Test, Black box Test, Grey box Test, Functional Test, Continuous Test, Destructive Test, Manual Test, Automated Test, Behavior Driven Development, Test Driven Development
- 場所:Unit Test, Integration Test, User Acceptance Test, Verification Test, Smoke Test, Sanity Test, Security Test, Development Test, Alpha Test, Beta Test
- 用途:Installation Test, Compatibility Test, Performance Test, UI Test, Usability Test, A/B Test, Grey Test, Load Test, Stress Test, Endurance Test, Vulnerability Assessment, Penetration Test
而在工程和生產以外,例如產品管理、市場推廣、商業發展,仲有行政能力、栽培訓練、投資者管理、商業法律等等,都是一個又一個的大領域,都是互聯網商業所需。那些只望著 Fullstack 的人,實在眼光太短淺了。