什麼是技術棧? (What is a technology stack) - Mixpanel
what-is-a-technology-stack

技術棧:它的定義以及構建方式

什麼是技術棧?

開發人員只有掌握正在發生的情況,才能管理技術棧,正因如此,像 Mixpanel 這樣的分析平台成為了技術棧的重要組成部分。棧中的每個工具都建立、分析或內嵌數據,要實現最有效的執行,這些數據來源需要相互連結。

定義

技術棧也稱解決方案棧、技術基礎結構或數據生態系統,是用於構建和執行某款應用程式的所有技術服務的清單。例如,社交網站 Facebook 由編碼架構和語言組合組成,包括 JavaScript、HTML、CSS、PHP 和 ReactJS。這就是 Facebook 的「技術棧」。

開發人員之所以談論技術棧,是因為它可以方便地傳達關於應用程式構建方式的豐富資訊。該術語有時也適用於行銷服務(行銷技術棧)或銷售服務(銷售棧),但它卻起源於軟體開發社群。 技術棧可以快速彙總開發人員與應用程式建立介面所需的程式設計語言、架構和工具。由於大多數編碼語言都有眾所周知的效能屬性和局限性,因此技術棧可以透露整體應用程式的優缺點。 例如,如果程式設計人員知道某軟體服務是在 PHP 上構建的,那麼他們就知道它的程式碼庫可能很大並且難以偵錯。眾所周知,PHP 是一種低效編碼語言,但大多數流行的 Web 應用程式都使用這種語言。如果程式設計人員知道某款應用程式是使用 Ruby on Rails 構建的,他們就知道必須學習程式設計語言 Ruby 才能做出任何變更。 在聘用開發人員時,技術棧特別有實用價值。訊息平台 Lua 的全棧軟體工程師 John Debs 表示:「求職者必須熟悉或願意熟悉技術棧的架構和語言,否則可能不適合我們公司。」意圖招聘開發人員的公司通常將技術棧包含在職位要求中。

如何構建技術棧

不同的公司需要不同的技術棧,不可一概而論。團隊會決定要使用的技術,然後以核心編碼語言為基礎進行構建,並動態新增其他工具和服務。代管供應商 Digital Ocean 的數據分析師和工程師 Lira Skenderi 表示:「當你腦海中有產品構思時,通常會從前端入手,也就是面向客戶的那部分,然後再決定需要哪些後端工具來提供支援。」 由此產生的服務組合稱為「棧」,因為每一項附加服務都構建於其底下的那些服務之上,這也讓開發人員得以自訂應用程式。 開發人員在設計一款每天有數百萬人存取的應用程式時,可能會選擇擅長高閱讀率作業的程式設計語言,這意味著大量用戶可以同時存取。如果應用程式的目的是爬網並收集資訊,那麼開發人員可能會選擇高寫入量語言。 所有技術棧都分為後端和前端,也稱為伺服器端和用戶端。如果將技術棧比作膝上型電腦,那麼後端就是內部硬體,它的作用是使電腦可以工作。前端介面是螢幕、外殼和鍵盤,它們的作用是讓用戶可以與膝上型電腦互動。 如果某個職位需要具有後端、前端和全棧經驗的工程師,它指的是在技術棧中該求職者在理想情況下將專門從事的那部分工作。

overview of a simple tech stack

後端技術包括 Web 架構、程式設計語言、伺服器和作業系統。有一個流行的 Web 開發技術棧,縮寫是 LAMP,它的全稱是 Linux 作業系統、Apache HTTP伺服器,MySQL 關係資料庫管理系統和程式設計語言 PHP。 前端技術是視覺化介面,例如網站和應用程式。這些是大多數應用程式所為人熟知的視覺化元素,並為用戶提供完成任務所需的工具。 前端語言通常遠比後端語言簡單。大多數 Web 應用程式介面都是使用程式設計語言 JavaScript 和架構 Angular JS、Backbone.js 及 Reactjs 構建的。智慧型手機應用程式的前端技術包括 Objective-C/SWIFT(適用於 iOS 應用程式)和 Java(適用於 Android 應用程式)。

和造房子打地基一樣,棧的構建順序至關重要。每個新的層都建立在最後構建的那一層之上,被壓在下面的層是很難被輕易抽掉的。以下是構建技術棧的一些基本建議:

面向未來進行規劃

準備一個面向未來的技術棧可能是一把雙刃劍。如果開發人員沒有想好應用程式未來的擴充方式,他們可能不得不新增額外的服務,既繁瑣又難以管理。而如果他們預計到爆發式成長,並斥巨資購買昂貴的工具和服務,那麼很可能在應用程式取得市場成功之前,資金就已殆盡。 最佳策略是打造「最簡可行產品」,如使用開源工具的 Web 應用程式,先證明概念,然後再加以投資,同時尋找合適的工具,能夠靈活地將數據傳送給棧中的其他工具——即使一開始不作此要求。在遇到拿不准的時候,開發人員應始終傾向於更成熟的技術和語言,因為這些技術和語言往往更可為靠。

依靠開源社群

世界各地的開發人員都在為構建開源工具而出力,這些工具可供任何有網際網路連線的人免費使用。開源社群的範圍之廣,功用之大,無疑是令人驚嘆的。 Debs 表示:「開源軟體或許是過去 10-20 年技術復興的幕後功臣。人人都可以站在巨人的肩膀上,用極其複雜的底層技術打造產品,而這些技術單靠自己是絕對無法實現的。其中凝聚了人們數十億小時的心血,以及來自各個領域專家的貢獻。」 Debs 估計,他每天使用的軟體是其他人耗費數百萬小時編寫而成的。考慮構建技術棧的工程團隊如果能夠充分利用開源軟體——至少在一定程度上利用,他們的工作就會輕鬆很多。

思考應用程式的目的

開發人員常常喜歡使用自己熟知的語言,但要構建最佳技術棧,不妨跳出視野的局限,根據應用程式的目的來決定它要使用的技術。例如,應用程式運行於行動裝置還是桌上型電腦?如果是行動裝置,需要怎樣的應用程式?如果是桌上型電腦,要使用什麼瀏覽器?它是每天都有數百萬訪客的媒體網站,還是需要採取安全措施的行動銀行應用程式? 不同的程式設計語言、工具和技術棧適合不同的目的。具有相關技能的開發人員亦是如此。

使用分析平台

開發人員必須掌握目前發生的狀況,才能妥善管理技術棧,因此許多人都使用產品分析。分析平台旨在將全棧的數據來源聯繫在一起,並提供精細的用戶追蹤。這樣一來,開發人員就可以識別用戶在使用其應用程式時遇到的問題,然後進行偵錯並修復錯誤。

考慮維護事宜

團隊在構建技術棧之前,應該對支援其技術棧所需的各項技術進行價格核算。如果無法確定,團隊應該將其總成本估算得高一些,並將工程人才的可變價格納入考量。開發人員常常為創新語言所吸引,因為這些語言將提高他們的技能,豐富他們的履歷。雖然成熟的程式設計語言或許更具可靠性,但可能會增加招募頂尖人才的難度。有時,就吸引頂尖人才而言,更廉價的技術可能最終會讓您花費更多。

立即開始免費試用 Mixpanel

加入使用 Mixpanel 的頂尖產品團隊行列,致力於打造更出色的產品

註冊