【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】