跳转到主要内容
Chinese, Simplified

仅供参考:新版本可在此处找到。请享用!

现在我们可以开始了。

对于那些不知道的人,ThoughtWorks是咨询公司 - 在他们的团队中有Martin Fowler和Rebecca Parson。由于他们的业务类型,他们有机会与来自不同行业,不同问题的不同客户合作。各种用例允许他们评估不同的技术,平台,工具,框架和语言,提出真正值得考虑的内容,以及从长远来看哪些内容过于夸张和有问题。
因此,他们能够创建技术雷达。这是他们的季度报告,对于数字业务中发生的事情持高度看法。从我的角度来看,他们是我们行业的时代精神 - 在你不值得的时间和每个人之间的甜蜜点 - 已经厌倦了主题的外观。不幸的是,虽然充满了知识,但由于它的结构,它也有点压倒性。区块链,云和移动开发混合在一起,因此很难检索特定于我们感兴趣的类别的知识。
这就是为什么我决定对当前版本进行分析并向您展示从中产生的结论。我也允许自己在其上添加一些我自己的分析。我希望对于那些已经完整阅读过的人以及那些从未听过它的人来说,这将是一次有趣的讲座。
玩的很开心。


区块链和分布式分类帐


我认为在技术雷达中真正有价值的事实是它不是炒作驱动的 - 编辑们相当克制自己的每一个新的闪亮的东西,通过黑客新闻的头条新闻。这就是为什么他们在将Distributed Ledgers添加到报告之前犹豫不决的原因。即使ICO在世界各地蓬勃发展,仍然只有少量提及区块链。现在,当尘埃落定并且我们生活在“后革命”世界时,可以在雷达中找到经过实战检验的技术。通过浏览,我们可以轻松区分市场上的两个主要参与者。

First是Hyperledger,一个“许可的”分布式分类帐。

它特别针对企业,并由IBM和英特尔等大公司提供支持。 Hyperledger从评估阶段毕业到试用阶段,这意味着只要适用的商业案例失败,它就可以被视为正确的工具。它主要是由于Composer,这个框架为平台带来了非常愉快的开发者体验。

第二个是以太坊平台。

它在Solidity(以太坊使用的智能合约语言),Truffle(应用程序开发框架)和Open Zeppeline(用于编写安全智能合约的Solidity层)中得到了充分体现。这两个平台正成为任何想要将Distributed Ledgers集成到公司流程中的人的主要参与者。
ThoughtWorks的编辑也看到了区块链之间互操作性的重要性,展示了Ripple已经使用过的Interledger协议。我们还可以提到Corda分类帐,区块链的分布式替代品,专门用于商业用途。虽然这种相当年轻的技术的稳定性问题仍然是一个问题,但各种可能的用法使该技术在竞争之间处于有趣的位置。
时代精神:区块链不再是一种黑客工具,目前许多工具正在成为主流。为了“销售”给企业,他们让开发人员在提供各种涵盖的业务场景时体验得更加愉快。对Hyperledger和Corda等典型区块链的许可替代品越来越受到关注。然而,以太坊仍然是分散用例的王者,并且随着生态系统的丰富,它将很难被废除。


移动


除了移动市场肯定成熟的一系列证据外,该部分并没有太多新颖之处。
谷歌正处于Android开发标准化的过程中,使其更加愉快和高效。 Flutter(类似于React Native的基于Dart的框架)和Android Architectural Components等项目尝试定义应如何在Google平台上创建应用程序。前者特别有趣,可以将应用程序与Android本身分离,这可能很有价值,因为谷歌正在投资Chrome OS或Fushia等项目。与此同时,优步的Ribs是后者的反对者,提出了一种不同的移动架构方法。他们的目标是iOS和Android应用程序,他们获得了很多社区支持。观察这场比赛的结果会很有趣。
尽管Android开发人员长期以来一直在使用Reactive Programming,但在iOS上它最近越来越受欢迎。在新的雷达版本中引入SwiftNIO就反映了这一点。与Netty类似,基于Event Loop的框架正在获得牵引力,而作为Apple本身的一个项目肯定有助于那里。虽然SwiftNIO本身不具有反应性,但它​​已经成为新兴工具集的重要组成部分。
更重要的是,我们还可以找到解决问题的有趣工具,这些问题会吓到当前的移动市场 - 用户正在下载更少的应用程序,从而强制将更多功能打包到现有应用程序中。为了在使用那些糟糕的单片代码库时不会疯狂,我们可以使用像Atlas和Beehive这样的工具,它们分别是针对Android和iOS的阿里巴巴问题的实用解决方案。
最后,新报告试图帮助您测试移动应用程序 - 包括低级别,推广可嵌入式模拟技术,将您的应用程序与外部依赖关系分离,以及提供像Appium这样的强大平台,允许在多个设备上进行分布式自动化测试。

聊天机器人


在这里看不多。这也是一个有趣的信息。
我们在这个版本中可以看到的最值得注意的事情是,没有提到像DialogFlow或亚马逊Alexa Stack这样的锁定平台了。在他们的位置,ThoughtWorks专家推广Rasa  - 开源替代方案,允许您创建自己的会话API而无需与外部供应商共享您的数据。即使目前所有关于它们的嗡嗡声,它清楚地表明现实中没有太多真实的商业用例可以证明投资在激动人心的(从技术爱好者的角度来看)技术。也许谷歌双工将改变这一点。

虽然聊天机器人和VA似乎在西方市场处于中断状态,但当我们看看东方市场时,有一个明显不同的故事。微信正在成为事实上的主要平台,可以被视为中国的“另一个互联网”。在进入该市场的过程中,您绝对不能错过与它的集成。虽然许多不同的平台试图复制这种成功(我指的是你,Facebook Messenger和Slack),但要实现这样的市场渗透水平,还有很长的路要走。


前端


很高兴看到Angular vs React不再是有趣的话题。社区已经分裂,没有必要讨论使用其中一个主要玩家。提到的唯一“框架”(但仅在评估阶段)是炒作,主要是由于它的简约方法和不断增长的社区。我们可能会考虑暂时关闭JavaScript框架的主题,至少从ThoughtWorks的角度来看。
这并不意味着前端没有任何有趣的事情发生。微服务也渗透到了这种环境中,并且微行业正在成为多个团队维护的产品的可行解决方案。更重要的是,工具正在发展 - 使用替代的打包管理器(如yarn to nom),替代构建工具(Parcel to Webpack)和静态分析工具(如Flow to TypeScript)。这样可以快速测试新的想法(就像Yarn和NPM一样)强迫已经建立的工具更快地发展 - 这些东西总能为生态系统带来价值。

GraphQL并没有失去它的速度 -  Apollo被提及作为一个至少应该尝试的工具,并且建议也使用GraphQL进行后端聚合,我们可能会开始认真考虑GraphQL不是时尚,而是技术和我们在一起呆更长的时间。
WebAssembly是一个未来 - 它仍然需要大量的抛光才能被认为是生产准备好的,但是如果有人想加入它的潮流,那是最好的时刻 - 也许今年还没有,但很快我们肯定会听到有趣的用途这场巨大革命的案例即将上映。
最后但同样重要的是,CSS世界也在不断发展 - 像CSS Grid和CSS Modules这样的新标准/方法证明了社区开始聚集如何解决可能是前端堆栈最混乱部分的问题。关于时间。

后端


我记得当.NET Core发布时,它被视为.NET技术的“结束”,即微软堆栈的天鹅之歌。现在,我们可以将其视为市场上最重要的平台之一,在多个云平台(不仅仅是Azure)和不断扩展的生态系统(如同提到的Swashbuckle)中获得普及。我们行业的未来主义者经常错过他们的预测。

对于JVM平台,Kotlin受到了很多人的欢迎,并使之前的Poster Childs黯然失色,比如Scala,Groovy或Clojure。后者仍然在报告中作为一种支持Clara规则的语言进行了讨论 - 在Clojure中提供了很好的DSL规则引擎。同时,提到Reactor正在巩固这样一个事实:使用Reactive Stream,添加到JVM平台,反应系统成为编写Java应用程序的越来越自然的方式。


安全


安全始终是,而且永远是开发人员工作的关键部分 - 尤其是在公司实体中,这些公司实体是最大的通信公司客户。这就是为什么报告的每个版本都包含许多工具,可用于保存宝贵的公司机密和客户数据。
从技术开始,我们有Sidecar用于端点安全性。 Sidecars是一种很有前途的架构模式,有助于保持应用程序的核心逻辑清洁,同时将必要的复杂性(如安全性)委托给外部代理进程。它似乎是其他建筑趋势的一个很好的补充。
报告中还可以找到不同的安全审核工具 -  AWS的Scout2和cfn_nag,节点应用程序的nsp。更重要的是,基础设施配置扫描仪本身可以找到超出值得评估的技术。当我们添加dependabot(自动检查依赖项的新鲜度)时,我们正在接收强大的保护层组合。
但并非每个攻击向量都可以预先预测。这就是为什么Security Chaos Engineering是一种强大的技术,可以让您随时通过不断自我攻击系统做好准备。虽然难以正确实施,但由于其潜力巨大,因此不容易被解雇。
报告编辑器中还有一个特殊的位置,它存储可帮助您验证用户的工具。托管身份即服务是一种非常有前景的技术,而Keycloak是一个有趣的开源平台,可以帮助您在微服务世界中进行授权和身份验证。
如果凭据未得到正确保护,则系统不安全。 GoPass是一个帮助以安全方式分发凭证的工具示例。但是,我们需要记住,当您没有良好的公司密码处理文化时,没有任何工具可以帮助您。如果您的基础架构正确自动化,那么实施三R企业安全(旋转,修复,重新保存)是使攻击层非常薄的好方法。
谈到安全问题,我们不能忘记它不能使你的组织瘫痪。连接所有开发人员有一件事 - 每个人都讨厌VPN。这就是为什么在报告中我们可以找到由Google创建的BeyondCorp--研究论文,描述良好实践,实施后允许员工通过开放网络连接安全服务,无需代理或VPN。我绝对希望生活在每个公司都实施这些技术的世界里。

测试和监控


这一类别肯定是技术雷达的重要组成部分。
在标准测试框架(如Enzyme for React和AssertJ for Java)和众所周知的技术(如混沌工程)之间,推出了许多不同寻常但有趣的解决方案。很容易发现它是本版本创作过程中的重要主题。

有一个负载测试工具(Flood.io),读者可以使用Jupyter Notebook来测试自动化。我们也能看到原始的想法,比如......建筑的单元测试。另外,我们有WireMock,这是一个很棒的工具,可以用作模拟服务器,允许您在测试工具下替换您的依赖项。每个人都应该为自己找到一些东西。
此外,绝对是国王在E2E测试套装中应对UI。多种工具令人惊讶。我们有Chrome和Firefox的Headless版本,我们还发现BackstopJS,它们用于执行回归测试。更重要的是,如果您想在CI环境下在这样的测试套件下完全注册应用程序的行为,您可以使用赛普拉斯生成这样的截屏视频。最后但并非最不重要的是,对于移动开发人员,有Appium Test Distribution,它允许您同时在多个设备上执行测试。 UI回归始终是测试套件中最难和最昂贵的部分,因此很高兴看到很多工具正在出现,以帮助您抵御这类错误。


监控

尽管很少关注监测工具,但我们在报告中可以找到的这些项目令人印象深刻。来自监控世界的人肯定喜欢做缩写,而对于广泛使用的ELK(弹性搜索,Logstash,Kibana)堆栈,我们现在可以添加TICK堆栈 -  Telegraf,InfluxDB,Chronograph和Kapacitor。 Influx在社区中有很多积极的嗡嗡声,所以很高兴看到围绕它的生态系统建设正在增长。
我们在Radar中可以找到另一个有趣的工具是Sentry。在经常发现JavaScript错误的世界中,Sentry允许开发人员快速做出反应,提供出色的客户满意度。
在不是ReallyBigThing(tm)的情况下,每个请求的日志级别是一种技术,应该由开发人员使用,并且由日志工具支持。可能任何曾经用大量噪音挖掘不必要的大型生产日志的人都会同意我的观点。

容器

好的,Kubernetes是胜利者。我们可以转到下一节。
没有人正在讨论Docker Swarm或Docker Enterprise Edition(它本身支持Kubernetes开箱即用)作为可行的替代方案。每个重要的云播放器都拥有自己的Kubernetes工具(Google Kubernetes Engine,由远程容器服务提供支持的AWS Fargate(以及近期的EKS),Azure Kubernetes服务支持的Azure Service Fabric)以及围绕此技术的工具生态系统正在以前所未有的速度出现 -  Technology Radar不仅提到由Kubernetes团队自己创建的Package Manager(Helm)和操作工具箱(kops),还提供监控(Sonobuoy)和服务网格实现(Conduit),这些工具是由想要在Kubernetes上货币化的外部企业创建的。人气。
玩家投入技术的人越多,留下来的机会就越大。拥有所有大型云提供商和外部公司组合是Kubernetes Stack进一步整合的标志。他们正在迅速走上反叛道路。
名誉提到有Windows容器 - 微软在该技术上投入了大量资金,目前他们可以准备好生产。借助“原生”Docker对MacO的支持,不再将容器视为Linux域。
有趣的是,Docker在本报告中的报道很少。对于开创集装箱化趋势的公司来说,这不是一个好景象。我们可能会在不久的将来看到他们是否仍有任何好主意将他们的行业突破技术货币化。


机器学习

在描述Contenerization趋势时,我写道Kubernetes是一个明显的赢家。我们与机器学习有类似的情况。突出显示PyTorch易于掌握和使用舒适不会改变全球范围:TensorFlow是那些对深度学习感兴趣的人的主要平台,它的优势每天都在增长,整个生态系统都在不断增长。
这就是为什么我要关注不太明显的趋势和工具。其中第一个是Jupyter笔记本 - 我看到很多人对这个开源的,更为hackish的替代老好的Mathematica(来自可爱的大学时代的美好记忆)以及它开始出现的各种用法(分析,测试)的热情对于任何对数据科学感兴趣的人来说,它都是一个多功能工具。我最近自己测试了,我肯定将来会更多地使用它。
很高兴看到,在一个花哨的框架世界中,来自Whileworks的人们不会忘记旧的,好的数学,这是所有计算机科学的基础,他们突出了CVXPY。很高兴看到以优雅的方式解决数学问题的图书馆仍然能够引起社区和咨询公司的注意。


如果我需要展示我最喜欢的,最有影响力的建议,从当前的技术雷达中茁壮成长,我会选择ThoughtWorks撰写的有关云在商业中使用的内容。
他们促进不同云的使用,总是选择最适合工作的工具。更有趣的是,他们强烈反对仅使用来自云提供商的通用解决方案,并认为仅通过裸机或存储,我们就会失去其最有价值的锁定解决方案所带来的竞争优势。这一直是一个艰难的决定,但我们不能忘记,可怕的供应商锁定只是一种风险,应该加权我们可以使用云提供商工具链的高度专业化元素实现的收益。
在一个甚至市场领导者背后都有竞争的市场中,为大型云播放器雇佣的大型开发团队已经解决的问题创建自制解决方案始终是时间,控制和成本之间的平衡。在特定的提供商上依赖你的业务肯定会让你在后面开枪,历史告诉我们什么(解析,我们会记住!),但有时这是值得冒的风险,特别是如果云能力只是目标的意思,不是你的战略优势。


数据库


高可用性是连接此类别中所有产品的主题。

专有的全球分布式数据库备受瞩目。微软的Cosmos DB和Google Cloud Spanner都是同类中最好的,在不同方面解决问题,仍然解决了非常重要的客户问题 - 以分布式,一致且高可用的方式存储数据的能力。更重要的是,它们是能够为您提供钱包可以处理的吞吐量的解决方案。虽然供应商锁定是一个可能存在的问题,但ThoughtWorks认为它们是解决各种挑战的有趣方式。
但是,如果你仍然希望建立自己的高可用数据库,那么第三个位置 -  Zalando的Patroni  - 应该引起你的兴趣。它是创建自己的HA PostgreSQL的模板,包括电池(监控,编排)。它被描述为一个经过实战考验的解决方案,可以解决许多不同的边缘情况,特别是那些在开始实现自己的数据库集群之前甚至都没想过的情况。更重要的是,他们的支持Kubernetes(该文章中有很多Kubernetes)。


架构


当前的架构趋势总是在ThoughtWorks Technology Radar中得到很好的体现。
首先,与之前的版本一样,推广使用轻量级建筑记录。我最近有机会加入一个执行该技术超过一年的团队,我个人看到了加入你组织的新人有多好。
建筑健身功能是一个在2017年引起很大关注的概念,由两个响亮的(虽然不是普遍赞赏的)书籍代表:鲍勃叔叔的“清洁建筑”和“建筑进化建筑”,由同一作者共同撰写Rebecca Parson,ThoughtWorks的首席技术官。虽然现在说这个理论概念是否会起飞还为时尚早,但我会观察它未来对行业的影响。
Service Mesh也在报告中表示,既作为技术本身,也作为名为Conduit的Kubernetes实现。在微服务不再“时髦”的世界里,Service Mesh成为一种建筑潮流,将成为未来几年会议发言人的主题。
报告中涉及跨服务通信的技术也很受关注。我们有几个与事件相关的概念:在真正的基于事件的系统中我们应该依赖它们多么强大(EventSourcing作为事实的来源),或者消费者应该如何推动他们的设计(Domain Scoped Events)。
而且,服务之间的GraphQL使用建议,不仅对于前端应用程序肯定吸引了眼球。我也非常高兴看到明确指出您的事件队列(以及Kafka专门)不应该像旧的Enterprise Service Bus一样使用。我已经看到了朝着这个方向发展的趋势,所以现在是时候对这个想法有多糟糕了。我们不能让历史圆满结束。

无服务器


无服务器平台肯定成为主流。它们是如此主流,现在我们的行业开始提出难题 - 关于许多小功能的编排,不会让我们的团队疯狂。其中一个可能的解决方案是使用API​​网关将许多较小的功能组合在一起。 ThoughtWorks不愿意这样做 - 一方面,他们将Kong API Gateway作为一个有趣的想法推广,同时警告过度使用API​​网关会让开发人员生活变得悲惨。在每种情况下都需要中庸之道。

从工具方面来说,代替前面提到的无服务器框架,在这个版本中,我们可以发现它是最大的竞争对手Apex。虽然不是市场上最灵活的(仅支持AWS Lambda,而无服务器框架也适用于Google云功能,Azure功能和IBM的开放式高手),但Apex不那么复杂,为那些不需要的人提供了更好的开发人员体验。同时支持许多平台。特别是因为通用云使用已被提及为我们行业的问题。


CI / CD


有趣的是,与先前版本相比,Continous Integration / Deployment的覆盖范围有限。我们只收到两个工具(现代,与他们自己的CI / CD系统非常相似)和一种使用Pipelines来处理我们的“基础设施作为代码”的技术。
虽然IaaC和持续部署的协同作用似乎是一个非常令人兴奋的想法,但CI / CD的代表性不足表明我们应该开始考虑解决问题,特别是与几年前的情况相比。看到我们的行业在这方面成熟,我们可以专注于其他更加紧迫的问题,这真是太棒了。


文化


为了更好地理解这一部分,我们需要记住谁是ButWorks的主要客户 - 大公司。这些组织拥有完善的内部结构和许多稳定(有时称为传统)产品。这带来了很多问题 - 我想大多数人都在阅读这些公司,所以你可以想象。
有一本名为“创新者的困境”的邪教经典着作以令人信服(并且令人恐惧)的方式描述了禁止在这样一个组织中改变(和创新)的所有力量。 Domain Driven Design为架构级别的旧服务同居问题提供了解决方案 - 反腐败层。在新技术雷达中,它从技术层面升级到团队层面。无论我们称之为自主泡泡模式(我开始在一个地方使用的一个美妙的名字)或内部创业,我很高兴ThoughtWorks尝试编写这样的方法,因为当你有一个吸引人的名字,你可以开始提到它的会议的必要性:)
如果我们想要使用第二种推广技术 - 将产品管理应用于内部平台,从我的角度来看,自主泡泡模式是必需的。我想每个人都在过去就内部产品工作,一个没有概念和想法的开发,被客户推动。如果您将内部服务视为产品,那么您就会获得力量 - 选择开发工作方向的能力。你对自己的成功负责 - 很难找到更具激励性的东西。

物联网

在物联网领域,LoRaWan是社区的话题 - 低功耗设备之间的下一代无线通信层。虽然尚未成为非常受欢迎的标准 - 目前正在评估广泛测试的过程并且可能的潜力。
对于那些对机器人项目感兴趣的人来说,当前版雷达的两个位置将会很有趣。首先,我们有流行的Cylon.js的兄弟GoBot。 Go是发现IoT社区人们非常感兴趣的语言,特别是由于它很容易掌握并发模型(我仍然看到很多投资到Rust,所以我们将看到谁将成为这场战斗的赢家) 。
由于Arduino仍然是霍比特人机器人构造函数的主要参与者,Moongose OS主要关注商业实现 -  Arduino太高级别的用例,而Native SDK太低级别。 Google云平台和AWS IoT的支持无疑是该平台的一大优势。

从我的角度来看,报告中最重要的是对WebBluetooth标准的支持越来越多。对智能设备的主要协议蓝牙缺乏支持,这是Web和本机应用程序之间的巨大差距。很高兴看到这种裂痕每年都变得越来越小。
其他
“平台”类别中也很少有东西不符合我的任何部分。
Godot是Unity的竞赛,专为VR体验而设。 Contentful是面向开发人员的API-First CMS,如果您需要更简单的工具,Netlify似乎是非常快速部署静态页面的好方法。
尽管如此,我从该部分中选择的(虽然从我自己的角度来看可能是最不实用的)是语言服务器协议 -  Microsoft在其Visual Studio代码编辑器中使用的工具,用于智能语法建议。很高兴看到像开源这样的东西。


结论


呃,那很长。如果你到了那里,谢谢你。我希望我的“反向索引”技术雷达有一点评论让它更容易掌握。我感谢所有的反馈 - 我希望每个季度,我都能够生产出更好更好的包装:)

 

原文:https://medium.com/virtuslab/i-read-last-thoughtworks-technology-radar-vol-18-so-you-dont-need-to-b08db0a79997

本文:

讨论:请加入知识星球或者小红圈【首席架构师圈】

本文地址
Article
知识星球
 
微信公众号
 
视频号