【51CTO.com快譯】如今,隨著軟件技術的不斷迭代,以及應用范圍的持續擴展,企業對于軟件架構師的基本工程技能期望,也在急速攀升。其中包含了:全棧的架構知識、以客戶為中心的產品設計思維、應用平臺工程的實驗性創新思維、采用SRE實踐的針對生產環境的主動監控和可觀測能力,以及更多的常態化工程實踐。而且,在某些特定的領域,工程知識的廣度會比技術技能的深度更加重要。
如下圖所示,從廣義上說,工程項目的組件可以被大致分為八種不同的類別。您不必成為所有這八個領域的專家,但是有必要去深耕某幾個領域,融會貫通,進而成長為一名真正的軟件架構師。下面,讓我們以學習路線的思路,逐一進行深入討論:
一、軟件工程、架構和設計模式
對于軟件工程、架構、以及設計模式的基本知識,我向您推薦如下學習路徑:
- 軟件架構的要點和參考文檔:由《軟件系統架構(Software System Architecture)》一書所帶來的各種軟件觀點和架構視角,涵蓋了各種制定軟件架構時可遵循的指導性方法。
- 《軟件架構的各種模式(Software Architecture Patterns)》:該書涵括了諸如分層、事件驅動、Reactive、消息驅動、微內核、微服務、管道等常用的軟件架構模式,可方便您從基礎上去掌握軟件架構的各個要素。
- 基礎《設計模式(Design Patterns)》:為您梳理了22種設計模式,涵蓋了面向對象設計模式的各項基本要素,包括:創建、結構和行為模式。
- 云原生設計模式:主要涵蓋了當前流行的設計模式,例如:應用程序的12項關鍵原則、域驅動設計、以及各種云設計模式。
- 企業架構:對于想通過企業架構發展,來積累豐富經驗的架構師來說,了解TOGAF的The Open Group、以及諸如Zachman或PEAF等類似的框架,是必不可少的。
- 參考資料:在本領域的最后,您也可以參考為架構師準備的行業研究與報告、以及各種軟件體系架構的標準和準則。
二、基礎設施、云、DevOps與自動化
對于基礎設施、云、DevOps與自動化的基本知識,我向您推薦如下學習路徑:
- 基礎設施(計算、存儲和網絡)涵蓋的基本要素包括:
- 計算:裸金屬(Bare Metal)、虛擬化(Hypervisor)、容器、容器編排、邊緣計算、無服務器、負載平衡等。
- 存儲:對象存儲、文件存儲(如NFS、SAN)、數據庫存儲、存儲復制等。
- 網絡:基礎網絡(如集線器、網橋、交換機、路由器等)、拓撲、LAN、WAN、VPC(虛擬私有云,Virtual Private Cloud,)、CIDR(無類別域間路由,Classless Inter-Domain Routing,https://cidr.xyz/)等。
- 云架構:涵蓋了三大云服務提供商的、有關在云中設計和運行各類流量負載的關鍵概念、設計原則、以及有關架構的優秀實踐:
- AWS的完善框架,以其卓越運營、安全性、可靠性、性能效率、以及成本優化,成就了架構支柱。
- Microsoft Azure的完善框架,同樣提供了成本優化、高效運營、性能效率、可靠性、以及安全性。
- Google Cloud的架構,則以便捷的運營、安全性、隱私與合規性、可靠性、性能與成本優化等方面,成為關鍵的原則。
- 您還可以通過鏈接--https://vedcraft.com/architecture/software-quality-strategy-is-essential-for-every-architect/,了解更多有關云遷移或框架采用的綜合文章。
- DevOps涉及到持續構建與集成的生命周期、持續部署、持續交付、以及CI/CD 等方面,具體包括:
- “DevOps周期表”涵蓋了由digital.ai編譯的大多數 DevOps工具和技術。
- 由Google發布的DevOps狀態報告研究。
- 有關GitOps、DevSecOps、AIOps、以及MLOps等最近趨勢。
三、質量工程,持續交付
在了解質量工程和持續測試的細微差別的基礎上,我向您推薦如下學習路徑:
- 持續交付:了解整個持續交付生命周期的基礎知識。加入開源的CD Foundation社區,以分享和追更該領域的各種優秀實踐。
- 敏捷交付實踐:可獲得某一種敏捷框架的認證,例如SAFe(Scaled Agile Framework)。
- 質量工程實踐:涵蓋了各種標準實踐的基礎知識,例如:單元測試、行為驅動測試、功能測試、健壯性測試、回歸測試、進展測試(progression testing)、移動測試、可訪問性測試、像素測試、性能測試、以及安全性測試。
- 持續測試:通過諸如Selenium(等工具、以及實踐,涵蓋各種自動化的基本要素。
- 軟件質量:您可以通過鏈接--https://vedcraft.com/architecture/software-quality-strategy-is-essential-for-every-architect/,來了解作為架構師需要了解的軟件質量的方方面面。
四、生產工程與SRE
為了了解現代化生產工程的動態實踐,我向您推薦如下學習路徑:
- 基礎的SRE實踐:《Google SRE知識書籍》涵蓋了SRE的相關原則、實踐和管理方面的各個要點。
- 面向生產的設計:從生產工程的角度出發,用模式和反模式去設計應用程序。
- 現代化實踐:通過混沌工程現代化實踐手段,來拓展您的知識。
五、平臺工程(Platform Engineering)的研究和認知
要理解平臺工程的研究與相關性,我向您推薦如下學習路徑:
- 平臺工程:了解平臺工程團隊的新趨勢,并獲取其相應的應用能力。
- 行業研究:通過鏈接--https://vedcraft.com/architecture/5-reports-every-software-architect-should-read/,了解Forrester、Gartner等的行業研究報告。
- 工程博客:通過鏈接--https://vedcraft.com/architecture/engineering-blogs-every-software-architect-should-read/,了解最佳實踐和案例研究。
六、數據工程、機器學習、人工智能
若想對數據工程、機器學習(ML)和人工智能(AI)有更加廣泛的理解,我向您推薦如下學習路徑:
- 數據工程:涉及到由Oracle編寫的《企業架構師指南》,有助于理解Hadoop和Cloudera基本理論的《大數據基礎知識》,《云中數據湖》,以及使用Snowflake或Databricks(的新興數據云平臺等趨勢。
- AI和ML:您若想成為更具有廣泛能力的技術專家,理解和應用AI與ML是至關重要的。您雖然不必成為該領域的數據科學家,但是您有必要了解如下有關AI和ML的知識:
七、可觀察性、監控、分析
為了了解可觀察性、監控和分析之間的細微差別,我向您推薦如下學習路徑:
- 應用監控:應區別對待應用狀態和系統性能的監控。
- 可觀察性:將監控的邊界擴展到日志、指標、數據跟蹤、用戶體驗等可觀察的元素上。
- 分析:了解按需使用行為、性能、市場、以及客戶分析的工具。
八、業務價值和以客戶為中心
為了了解業務價值和以客戶為中心的相關性,我向您推薦如下學習路徑:
綜上所述,工程技能不僅僅與技術有關。作為一個合格的軟件架構師,您需要全面了解和掌握與工程項目有關的方方面面。希望上面給您總結和列舉的八項技能,能夠為您的日常工作提供幫助。
原文標題:Essential Engineering Skills For Every Software Architect,作者: Ankur Kumar
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】