標籤:
如今,現代互連網軟體應用已經成為一項需要很多人一起構建與維護的龐大工程。 我們是怎麼構建複雜軟體系統的呢? 一切源於對人類生存處境和現實問題的洞察和思考。 電腦起源於大量科學計算的需求; 接著, 通訊成為重要驅動力; 緊接著, 全球資訊網與分享成為主流, 搜尋引擎助力; 然後, 智能手機催生了移動時代的來臨, 進而引起雲端運算和大資料的技術變革; 在雲端運算和大資料之上,構建智能精準的業務。 產品經理是洞察人們處境和需求的先鋒隊,是產品成長的守護者; 專案經理組織協調資源,在可接受的成本下督導項目與產品的完成; 程式猿與媛是實現產品的主力團隊; 視覺、互動設計做出人性化的互動展示效果,使產品更易用; 營運工程師保障軟體日常的穩定運行和高峰期的正常運行; 客服同學為使用者答疑解惑,協助使用者解決困惑和問題; 運營同學通過策劃使得產品獲得更大的效用; 行政、財務、HR 保障整個組織的正常運行; 銷售同學將產品推向市場,開拓新的市場領域。 從技術角度來看, 有如下重要裡程碑: 可程式化: 使得硬體成為“百變天后”, 不再局限於單一功能; 編譯器: 使得程式員可以使用進階語言和接近自然語言的領域語言來表達現實世界; 作業系統: 計算資源分派與調度的核心, 使應用可以更加專註於任務層面; 結構與演算法: 計算領域的基石, 所有進階技術和現代應用都建立在其基礎之上; 資料庫: 海量資料的有序儲存、組織、統計; 幾乎所有現代應用都依賴於資料庫; 開發庫: 使得日常任務可以反覆地重用,極大地提升了軟體開發的效率,一日千裡; 應用程式框架: 使得構建現代應用可以直接從 40% 起步; 中介軟體: 使得基礎技術組件化和服務化,為大規模系統的構建提供了強大的基礎設施; 營運力: 當今大規模軟體世界得以持久穩定啟動並執行重要護航力量; 移動機: 行動裝置充當串連萬物的媒介, 聯結人們所能觸及的世界; 雲端運算: 資源彙總重用,提供更彈性而強大的基礎計算能力; 大資料: 通過資料分析挖掘提煉出智能、精準的未來業務; 多樣強大的開發工具,極大地延展了人的固有能力,即使幾歲的小孩都有能力做出像樣的應用; 結構化、函數式、對象編程思想繼續引領編程領域,成為構建大型可擴充的複雜系統的思想基石; 效能與成本是永恒的驅動因素; 在海量互連網使用者的時代更是如此; 以儘可能少的成本, 安全流暢地駕馭海量資料; 並發與非同步成為現代軟體應用的基礎技術; 分散式運算成為構建大規模互連網應用的主流技術; 緩衝是提升查詢效能的必要技術; 儘可能消除資料不一致成為維護現代應用的主要挑戰。 智能是未來的憧憬, 通過智能、精準的技術來適配人的行為特性; 即時搜尋與調控能力在部分領域是重要的驅動力; 若說效能是軟體的剛效能力, 那麼健壯性和可維護性是應用的軟實力; 健壯性使得應用更友好地處理錯誤,減少使用者煩惱和困惑; 可維護性良好的軟體才有健康穩定成長的潛力。 子系統之間的互動標準化正常化也是重要的組成部分; 大規模的軟體應用常常是依靠多個子應用相互協作而良好運轉; 駭客與安全技術一直是最容易被忽視但決不可輕視的組成要件之一; 最後但也是非常重要的, 大規模的、敏捷的、穩定的、使用者無感知的軟體熱升級、發布與部署技術是必不可少的; Docker 應運而生; 這需要與營運工程師緊密配合。 印刷、蒸汽、電氣是前三代技術變革; 計算技術是第四代技術變革, 毫不為過; 當今其它領域中沒有一個像計算領域這樣生機盎然、日新月異。
我們是如何構建複雜軟體系統的