现代软件架构师的10个技巧

作为软件架构师,我们既需要了解广受验证的设计方法,也需要知道业界的发展趋势,从而为业务提供前瞻性的架构设计,帮助实现业务成功。原文:Top 10 Tips You Should Know As A Modern Software Architect[1]

随着技术的快速发展,软件架构每天都有新的模式和技术诞生。本文总结了作为一名现代软件架构师应该知道的10个技巧。

#1 — 注意那些为微服务架构(MSA,Microservices Architecture)提供加速的框架

  • 随着微服务架构成为主流,大多数框架已经开始按照微服务架构的要求重塑自己。
  • 框架需要支持的关键功能是轻量级的、拥有最小的内存占用、易于学习、支持容错、具有可观察性(跟踪、度量、日志)、支持安全性(认证和授权)等。
  • 虽然Java生态中已经有Spring[2]和Play Framework[3]这样的框架,但是仍然需要关注新的框架(如Helidon[4]、Quarkus[5]或Micronaut[6]),并随时准备根据需求进行调整,。此外,像Spring这样的成熟玩家也提供了新的选择,比如用于微服务的Reactive Stack[7]、Spring GraphQL[8]、RSocket with Spring Boot[9]等,需要根据具体的用例来选择应用。
  • 其他语言也有类似的趋势,比如Golang的Gokit[10]和Gomicro[11], Python的Flask[12], Bottle[13], Falcon[14]和Nameko[15],以及NodeJS的Molecular[16]和Nest[17]
  • 微服务架构的另一个关键点是,不需要为所有微服务采用单一框架或技术,可以根据特定微服务的机制和需求选择合适的编程语言和框架。
  • 阅读这篇关于Java中微服务演变的文章:https://vedcraft.com/architecture/evolution-of-microservices-frameworks-in-java/

#2 — 选择适合微服务通信的模式和技术

  • 微服务之间的通信模式奠定了将来演化的基础,根据不同的用例,可以有很多选择。
  • 首先选择数据架构模式,然后选择通信风格。
  • 有很多二进制消息格式可以提供高效的通信,对于消息格式的多种选择,如下所示:


    图A -微服务通信设计选项决策表

#3 — 对API采用标准化和设计优先的方法

#4 — 考虑将服务网格作为加速器

在软件架构中,服务网格是一个专用的基础设施层,通过代理为服务之间或微服务之间的通信提供帮助。——维基百科

图C - 服务网格核心能力
  • 服务网格正在成为处理微服务通信和网络的标准。此外,它还可以提供其他辅助功能,如服务发现、客户端负载平衡、超时、重试和熔断、安全性等。
  • 注意,虽然服务网格一开始是作为一种更好的解决方案帮助RPC风格的服务间通信,但现在已经出现了一些新的模式,比如用于事件驱动微服务的Event Mesh[18]
  • 另外一点是服务网格与API管理/网关解决方案有部分功能重叠,不同方向的专家对它们的适用性有着不同的观点。好的解决方案可以在两者之间取得平衡,让两者协作完成各自适用的职责。

#5 — 在任何合适的地方使用云原生架构

通常,云原生与云服务提供商(如AWS、Azure、Google Cloud等)提供的云服务是一个意思,但最重要的是构建云原生的架构。云原生计算基金会(CNCF,Cloud Native Computing Foundation)[19]是Linux基金会的下属项目(成立于2015年),专注于云原生软件的发展。

根据他们的章程[20],云原生技术可以定义为:

  • 云原生技术使组织能够在公共、私有和混合云等现代动态环境中构建和运行可伸缩的应用程序。容器、服务网格、微服务、不可变基础设施和声明式API都是这种方法的例证。
  • 这些技术支持具有弹性、可管理的和可观察的松耦合系统。结合强大的自动化能力,允许工程师以最小的工作量频繁、可预测的进行影响广泛的变更。

作为软件架构师,我们需要了解云原生技术。目前由CNCF分享的云原生技术地图囊括了系统的方方面面,请开始在未来的架构设计中考虑云原生技术。

图D - 来源:https://landscape.cncf.io/

#6 — 将可观测性应用于端到端可见性

  • 可观测性被定义为一种度量方法,用来衡量基于系统外部输出可以推断出系统内部状态的程度。简单来说,可观测性决定了我们能在多大程度上理解复杂系统。
  • 可观测性将监控的概念扩展到了新的层次,包括四个关键支柱——端到端可见性的度量、跟踪、事件和日志(如下所示)。
  • 作为一种软件架构,与可观测性相关的SRE实践对于确保所考虑的系统在上线之后能够维持业务需求至关重要。


    图E - 可观测性四大支柱(MELT)

#7 — 应用Kubernetes作为基础平台

  • Kubernetes是新的Linux,并逐渐成为事实上的应用程序通用平台标准。作为混合云引擎(hybrid cloud engine)平台即服务的微服务及云原生架构(platform-as-a-service for Microservices & cloud-native architecture),Kubernetes得到了快速的普及。阅读这篇文章(https://vedcraft.com/tech-trends/solution-options-for-choosing-kubernetes-management-strategy/)可以获得更多关于Kubernetes管理策略和方法的细节(如下所示)。
  • 作为软件架构师,考虑到Kubernetes在行业中的广泛接受度以及作为多种技术解决方案中的基础作用,我们需要确保自己很好的掌握了Kubernetes。
图F - 来源:https://vedcraft.com/tech-trends/solution-options-for-choosing-kubernetes-management-strategy/

#8 — 利用托管服务和无服务器作为基础模块

  • 作为软件架构师,重点是解决业务问题,而不仅仅是技术挑战。在云时代,托管服务是专注于交付业务价值、将技术管理留给专家的关键因素。
  • 云服务提供商(如AWS、Azure、Google Cloud)提供了全面的服务目录,然而作为架构师,也应该探索其他专业供应商和解决方案创业公司提供的服务。
  • CNCF将托管服务和无服务器技术大致分为四个部分——工具、框架、平台和托管平台(如下所示):


    图G - 来源:https://landscape.cncf.io/serverless

#9 — 关注并应用零信任架构实践

  • 零信任安全(又称无边界安全)是现代架构中思考安全的新方式,包含四大支柱——人、设备、网络和工作负载。
  • 作为软件架构师,创建零信任架构(ZTA,Zero-trust architecture)是当务之急。NIST(国家标准与技术研究所)[21]认识到,向ZTA的迁移是一个过程,而不是完全替换企业的基础设施。可以阅读零信任架构白皮书[22]获取更多信息。
图H -来源: https://csrc.nist.gov/publications/detail/sp/800-207/archive/2019-09-23

#10 — 试验和应用自动化趋势

  • 最后,软件架构师需要了解行业中发生的自动化趋势。对现代软件架构师来说,不断试验和应用新趋势是一项重要的工程技能。
  • 与构建和发布、质量工程(软件测试)以及软件部署和基础设施管理相关的自动化是作为软件架构师需要注意的三个关键领域。
  • GitOps[23](一种为云原生应用实现持续部署的方法)和MLOps[24](一组为企业成功运行AI的最佳实践)是根据需要应用新趋势的新例子。

总之,这些技巧可以帮助我们建立基于现代实践的解决方案体系架构,但本质上它取决于所考虑的系统和相关的上下文。

现代软件架构师的10个技巧

References:
[1] Top 10 Tips You Should Know As A Modern Software Architect: https://ankurkumarz.medium.com/top-10-tips-you-should-know-as-a-modern-software-architect-8e602c6c998f
[2] Spring: https://spring.io/
[3] Play Framework: https://www.playframework.com/
[4] Helidon:https://helidon.io/
[5] Quarkus:https://quarkus.io/
[6] Micronaut:https://micronaut.io/
[7] Reactive Stack: https://spring.io/reactive
[8] Spring GraphQL:https://spring.io/projects/spring-graphql
[9] RSocket with Spring Boot:https://spring.io/blog/2020/03/02/getting-started-with-rsocket-spring-boot-server
[10] Gokit:https://gokit.io/
[11] Gomicro:https://github.com/asim/go-micro
[12] Flask:https://flask.palletsprojects.com/
[13] Bottle:https://bottlepy.org/docs/dev/
[14] Falcon:https://falcon.readthedocs.io/
[15] Nameko:https://github.com/nameko/nameko
[16] Molecular:https://moleculer.services/
[17] Nest:https://nestjs.com/
[18] Event Mesh:https://solace.com/what-is-an-event-mesh/
[19] Cloud Native Computing Foundation:https://www.cncf.io/
[20] CNCF Charter:https://github.com/cncf/foundation/blob/master/charter.md
[21] NIST(National Institute of Standards and Technology):https://www.nist.gov/
[22] Zero-Trust Architecture White Paper:https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-207.pdf
[23] GitOps:https://about.gitlab.com/topics/gitops/
[24] MLOps:https://blogs.nvidia.com/blog/2020/09/03/what-is-mlops/

你好,我是俞凡,在Motorola做过研发,现在在Mavenir做技术工作,对通信、网络、后端架构、云原生、DevOps、CICD、区块链、AI等技术始终保持着浓厚的兴趣,平时喜欢阅读、思考,相信持续学习、终身成长,欢迎一起交流学习。
微信公众号:DeepNoMind

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容