技术雷达是ThoughtWorks每半年发布一次的技术趋势报告,它持续追踪有趣的技术是如何发展的,我们将其称之为条目。技术雷达使用象限和环对其进行分类,不同象限代表不同种类的技术,而环则代表我们对其作出的成熟度评估。
经过半年的追踪与沉淀,ThoughtWorksTAB(ThoughtWorks技术咨询委员会)根据我们在多个行业中的实践案例,为技术者产出了第23期技术雷达。对百余个技术条目进行分析,阐述它们目前的成熟度,并提供了相应的技术选型建议。
本期五大主题
GraphQL浮夸风
我们看到GraphQL在很多团队中的采纳率激增,同时其支撑生态也在蓬勃发展。它解决了现代分布式架构(如微服务)中的一些共性问题:当开发人员把系统分解成很多小块时,他们通常还要把信息重新聚合起来才能解决业务需求。GraphQL提供了一些功能,可以方便地解决这类日渐普遍化的问题。就像所有强大的抽象一样,它提供的是一种折衷方案,团队要认真考虑,以避免长线上的负面影响。比如,我们已经看到有团队通过聚合工具暴露了过多的底层实现细节,导致架构出现了不必要的脆弱性。当团队试图借助聚合工具来创建规范化的、通用的、中心化的数据模型时,就会把短线上的便利变成长线上的麻烦。我们鼓励团队使用GraphQL及其迅速成长的周边工具,但是,要小心别过度追求技术通用性,不要试图用一项技术解决很多问题。
与浏览器的斗争仍在继续
网页浏览器原本是被设计用来浏览文档的,但现在主要用来承载应用程序,这种抽象的不匹配一直困扰着开发人员。为了克服这种不匹配所带来的诸多问题,开发人员一直在重新审视和挑战那些公认的用于浏览器测试、状态管理和构建快速且丰富的浏览器应用程序的方法。我们在技术雷达上可以看到这一类的趋势。第一,自从年Redux作为管理React应用状态的默认方法被移到“采纳”环以来,我们看到开发人员要么仍在尝试其他的方法(Recoil),要么推迟对状态管理库的选型决策。第二,人们对Svelte越来越感兴趣,而它正在挑战虚拟DOM的概念,后者则正是React和Vue.js等流行的程序开发框架所遵循的概念。第三,用于处理浏览器端测试的新工具不断涌现:Playwright是改进UI测试的又一个新尝试,而MockServiceWorker则是一种将测试与后端交互分离的新方法。第四,平衡开发人员的开发效率与应用性能一直都是我们需要面对的一个挑战,浏览器定制的腻子脚本的目的就是改变这个权衡的范围。
可视化一切
这一期技术雷达中,有几个条目来自不同技术领域但却拥有一个共性,即可视化。你会发现很多关于基础设施、数据科学、云资源,以及很多其他极富创新性的可视化工具,其中不乏一些可以有效可视化复杂抽象的方法。也有一些交互式的数据可视化工具和控制面板工具,如Dash,Bokeh和Streamlit,还有一些基础设施的可视化工具,例如微服务架构中的服务网格可视化工具Kiali。随着开发人员的生态环境变得越来越复杂,一幅能清晰地解释问题的图像对减轻大家的心智负担无疑是大有裨益。
基础设施即代码的青春期
随着组织看到自动化基础设施所带来的好处,管理基础设施即代码变得越来越普遍。这为创新型的工具和框架的创建者们提供了反馈。诸如CDK和Pulumi之类的工具,提供了远远超过第一代工具的功能。其改进如此之大,以至于我们相信基础设施即代码已经进入了积极与消极因素共存的“青春期”。我们惊喜地看到在所有象限中,都有相关雷达条目,从积极的方面反映了相关生态系统日益成熟。但是,我们还讨论了该领域因为缺乏成熟模式而面临的挑战,以及许多公司在尝试用最佳方式利用此功能时所面临的挑战。所有这些都表明,该领域在持续增长,但尚未成熟。我们希望基础设施社区,继续从软件设计中汲取教训,尤其要