当前位置: 首页 > 科技观察

2022软件发展趋势(机器改造)

时间:2023-03-12 19:51:39 科技观察

来自itmagination,纯机器改造,聚焦重点。今年早些时候,ITMAGINATION的.NET开发人员AndrzejFrydryszak参加了一些关于软件开发的会议。我们整理了一份清单,列出了与会者从美国和欧洲一些最优秀的工程领导者那里听到的最重要的观点。就是这样:1.可观察性[跟踪、监控和记录]至关重要!您正在开发软件并已准备好部署它。所有测试都通过并且测试覆盖率处于不错的水平。知道了这一点,我们就可以部署我们的代码并继续安心工作。即使这不是最优的(尽管很少见),我们的代码仍然会失败。是的!因此,开发人员需要一直观察他们的代码并让它一直报告指标。您需要让您的系统准备好在发生任何故障时向您发送日志。正如Andrzej所写:可观察性至关重要。没有它,开发人员是盲目的。它让我们有机会随时对系统中出现的每一个问题做出反应。2.最好同时使用“无服务器”和“服务器”方法。在这种情况下,我们受益于这两种软件开发方法。无服务器是一种在不涉及任何服务器的情况下(表面上)运行应用程序的方式。当然,这是一个主要的简化——服务器总是参与其中;只有在这种情况下,您才不会对它们进行任何操作,并且它们是预先配置的。它被吹捧为新的黑色,除了……它不是包治百病的完美药物。对于初学者,如前所述,您无法配置基本服务器。你也不知道引擎盖下是什么。主要缺点是这种方法同时具有主要优点。您不必配置任何东西,所以与其说部署?担心不如部署?忘记。无服务器或服务器解决方案都有好处。在现代系统中,通常使用这两种方法的组合来获得大多数解决方案。?3。容器化一切!Kubernetes是一项炙手可热的技术!并非所有的软件开发趋势都是好主意。你还记得CoffeeScript或Ruby吗?可悲的是,我们做到了。幸运的是,Kubernetes(K8S)似乎并没有加入悲伤谷中的两者。K8S让DevOps专家的生活变得更加轻松。以下是将容器化和容器编排作为技术战略的核心租户可以带来的好处:您将能够轻松优化IT基础架构成本由于无缝可扩展性,您的用户可以期待更高的可用性和更好的SLA使用Kubernetes使其更容易让您的团队使用多云解决方案。由于容器和容器编排工具与技术无关,因此您可以通过更精简的团队在任何您想要的技术上进行构建。您不再遇到容器化的陈旧问题。除了“它在我的机器上工作吗”这个问题的明显好处之外,我们会给你留下一些案例研究,我们希望它们能启发你,帮助你决定使用Kubernetes是否适合你,并展示更多深入的好处:NorthwesternMutual案例研究|Kubernetes:在收购一家金融科技初创公司后,NorthwesternMutual不得不整合云原生和本地流程之间的工作流,更频繁地部署,并统一团队的运营,以确保他们的客户继续获得他们习惯的无缝体验。使用Kubernetes帮助他们将部署速度提高了25倍以上,从一年的24次增加到10个月的500多次,计划内停机已成为过去,并且由于他们的API管理是在Kubernetes上部署不可或缺的一部分堆栈,基础设施成本显着降低。在案例研究中,您可以阅读更多关于这些要点、过渡到AWS、使用微服务、更新开发人员自主权以及让450万客户对其服务质量和速度感到满意的信息。第一资本案例研究|Kubernetes:就CapitalOne而言,底线是一个大话题。他们的估计表明,如果不使用K8s自动轻松扩展和缩减的能力,他们的AWS基础设施成本很容易翻三倍甚至四倍。他们从使用Kubernetes中看到的其他好处是新产品的上市时间,现在只需2周,而以前可能需要3个月或更长时间。开始关注Kubernetes开发的主要原因是什么?CapitalOne的团队希望提高处理流数据的速度,以便他们能够处理欺诈检测和信贷决策领域的关键决策,以及对银行日常业务至关重要的其他大数据和机器学习应用程序-天操作。您可以在案例研究中阅读更多关于这些要点、部署速度提高以及K8s如何帮助统一CapitalOne开发环境的信息。其他值得一看的案例研究:培生案例研究|Kubernetes:为一家服务7500万用户的教育公司加快新功能的上市时间,将供应时间从几个月缩短到几分钟,并确保高SLA。Prowise案例研究|Kubernetes:应用程序版本之间的零停机时间,新部署的几小时到几秒,在包含许多产品的复杂开发环境中,新版本的发布速度提高了3倍。Zalando案例研究|Kubernetes:欧洲时尚电子商务领导者使用K8s实现可扩展性,支持多种业务用例,例如当日送达、多租户、增加他们的产品和地理范围,并使他们能够重写和创建他们拥有的所有SaaS产品一直用作定制软件。阿迪达斯案例研究|Kubernetes:电子商务网站的加载时间减少了一半,每天发布多次而不是每月一次,随着阿迪达斯转向云原生,开发人员拥有更多的自主权。Booking.com案例研究|Kubernetes:在使用OpenShift并学习如何使用Kubernetes之后,Booking.com的团队转向了他们自己的K8s香草版本,以使他们的开发人员更加自主和独立,而不是让DevOps成为他们感知的瓶颈。对如何优化您的K8s部署或它是否是您当前规模的正确选择有任何疑问?请务必与我们取得联系,与我们的DevOps能力主管MaciejGos交谈。4.在软件架构方面,我们应该分而治之大型单体有点像昨天的故事。他们长期以来一直困扰着开发人员,尽管现在已经不复存在了。将巨大的单元代码库拆分为更小规模的应用程序是一种新的做事方式。它可以防火您的应用程序,减少错误的频率,并使应用程序在出现问题时更加安全。缺点是应用程序变得更难测试并且需要更多资源来测试。对于较小的团队,维护单体架构仍然更有意义。将单体应用程序划分为独立的微服务。5.开源和免费软件是未来之路React、Angular和Zuul来自Meta(曾经是Facebook)、Google和Netflix,分别是无数开发人员每天在工作中使用的工具。如果没有这些组织向每个愿意使用它们的人免费发布工具,每个人的工作都会困难得多。无数的服务将看不到曙光,因为编写这些应用程序太困难或太耗时。这一切都是因为人们必须弄清楚如何,例如,在编写前端之前自己编写可扩展的前端,如果不分享经验教训,效率会非常低。这就是为什么我们必须赞扬开源和自由软件的维护者、创造者以及为此类软件的创造和维护做出贡献的所有其他人。创建一种工具/技术并使其开源(或使其免费)可为组织带来永恒的荣耀。6.使用架构模式在软件开发中有一个共同的规则——不要重新发明轮子。知道我们以前可能遇到过与其他人相同的问题,这条规则变得更加有价值。这就是为什么来自世界各地的工程师和开发人员使用架构模式来构建他们的项目——而不是浪费时间思考如何找出其他人已经提出的解决方案。许多现代软件都使用CQRS和事件溯源等模式。不要重新发明轮子,使用模式。7.编程语言在不断发展其实我们有越来越新的编程语言并不奇怪。他们都来来去去,然后离开,被其他人取代。再也没有人用Algol或Pascal编写代码了。然而,一个老前辈C仍然存在,尽管它是一个值得自己探索的话题。一个值得注意的方面是它们多年来的发展方式。起初,命令式语言是独一无二的。然后是面向对象语言的繁荣,现在,有些人可能会争辩说,它们正在被更灵活的语言所取代,混合了一些命令式、函数式和面向对象的特性。语言的发展方式越来越独立于我们工作的系统。现代语言是跨平台的。由于DevOps的发展,语言选择变得越来越不重要。8.由于现代基础设施,复杂性正在从应用程序转移到外部平台。地下室物理服务器上的经典基础设施正在被云提供商和相关技术所取代。我们有虚拟机即服务、数据库即服务以及许多其他基础设施即服务。软件解决方案的规划专业化已经转移到基础架构的高级设计,因为许多功能可以基于它实现自动化。此外,我们还有容器和容器编排。它接管了复杂性,因为我们可以将系统分成更小、更简单的部分。应用程序代码更独立于平台。然而,复杂性在于基础设施和运营。应用程序开发人员越来越关注业务逻辑。DevOps工程师负责其余的工作。9.争球!=敏捷采用特定流程通常会导致习得行为,最终形成习惯。至少,这就是它的理论。然而,在某些情况下,这个过程会在人们只是在运动中艰难跋涉的时候停止,但行为永远不会发展。这样想一想,您见过多少开发团队经历了所有Scrum仪式,但实际上并没有以敏捷的方式工作?太多了?我们同意。所以,你可以做什么?首先,团队支持,这始终是需要建立的第一步。如果你的团队看不到以这种方式工作的价值,那么从长远来看,所有的过程和仪式都不会很重要。第二步是确保你有一个伟大的Scrum大师和项目经理,以确保良好的实践被传递,任何异议是第三步是要意识到:当敏捷价值观和Scrum框架没有优点时,强迫它扼杀人们的喉咙,它会让你无处可去,非常快。我们在题为“Scrum不是每个IT项目的答案(itmagination.com)”的文章中详细介绍了这一点。SCRUM可以是敏捷的,但它并不能保证敏捷。敏捷性来自行为,而不仅仅是过程。10.持续的安全正如我们之前多次写过的,安全不能是事后才想到的。我们不能简单地“留待以后”。检查应用程序的安全问题必须从第一天开始就集成到DevOps流程中,并集成到开发流程本身中。幸运的是,我们可以使用的工具很少,可以使这个过程顺畅进行。其中之一是Snyk。它是一个综合工具,可以“[f]发现并自动修复代码、开源依赖项、容器和基础设施中的漏洞,即代码[...]”。我们必须在开发周期中应用安全检查。安全是信任的基础——未来的货币。11.查看云提供商服务的价格由于三大云提供商几乎没有竞争,因此它们提供的服务差异(或多或少)是任意的。实际上,我们可能看到的唯一区别是服务价格的不同。这就是为什么对这个特定的提供商有偏见并不一定是坏事。事实上,在大多数情况下,差别不大。选择您熟悉并已经了解的任何提供商。边走边评估,不要害怕改变。云提供商之间没有虚拟竞争,也没有成本套利。云基础设施成本在很大程度上取决于通货膨胀和经济衰退。12.一切都可以“作为服务”来完成。平台即服务、基础设施即服务、数据库即服务、软件即服务、后端即服务……我们为您保留更多示例应该得到我们的看法。你能想到的,第三方都能做,卖给你。使用这些服务是一种权衡。你放弃了一些控制,变得更精简,能够更快地迭代,并预先节省一些钱。由于云提供商和无服务器方法的重要性日益增加,每个软件都可以作为服务来完成。13.每个人都使用VisualStudioCode。VisualStudioCode风靡全球。拥有Microsoft支持、拥有开源许可证、使用TypeScript编写并允许轻松扩展功能的组合是一个伟大的决定。到目前为止,文本编辑器是现代程序员中最受欢迎的选择。其他选项,例如基于Intellij的集成开发编辑器(IDE)或Vim,都处于Code的阴影之下,尽管JetBrains的Fleets可能会改变这一点。VSCode具有多种扩展和自定义工具,是开发人员中最受欢迎的IDE。14.TensorFlow现在被广泛使用谷歌的机器学习框架TensorFlow是非常受程序员欢迎的选择。首先,它在GitHub上排名前20位。然后,有多个端口,包括JavaScript端口,团队在他们的e.g.中使用这些端口。React或任何其他JS框架中的ReactNative应用程序或Web应用程序。这提供了巨大的灵活性,并允许团队将解决方案嵌入到许多解决方案中。感谢TensorFlow,我们可以在Web应用程序中实施AI解决方案。训练模型由图书馆提供。开发人员应重点培训他们。15.招聘年轻人是一个好的长期战略招聘年轻人是一个好的长期战略。虽然没有适合所有公司的“最佳战略”,但聘用初级员工并对其进行培训绝对是发展和留住内部人才的最佳方式之一。雇用入门级员工是一种很好的方式,可以随着时间的推移慢慢发展您的团队,并建立一种比雇用可能会如愿以偿的人更容易塑造的内部文化。青少年也获得了全新的视角,更容易接触到当前的趋势。在某些情况下,这并不理想,例如当您的公司需要快速扩展和开发新功能时。如果您有一个小型内部团队,由于不切实际的开发期望而总是试图赶上他们的积压工作,这也不是最好的。在这种情况下,聘请外部技术合作伙伴帮助开发,同时扩大内部团队可能是一个很好的中间解决方案。雇用年轻人来培训他们作为一种策略并非没有陷阱。你团队中没有经过前公司审查、没有工作经历的年轻人很可能会成功或失败。不幸的现实是,虽然这种策略可以通过适当的薪酬方案获得很好的回报,但初级员工可能会发现,他们只需更换公司,而不是等待或推动升职或加薪,他们的工资就可以翻倍、翻三倍甚至翻四倍.这就是为什么拥有透明的薪水和工资单以向人们展示他们可以在何处以及如何在他们的职业道路上取得进步是如此重要。这就是为什么有一个很好的入职培训计划也非常重要,以确保花在培训青少年上的时间得到充分利用,并使导师和受训者都受益。根据许多研究,对软件开发人员来说,长期招聘的一个良好做法是聘用没有经验的工程师,并在他们进入组织的过程中对他们进行培训。就是这样。2022年最有影响力的十五种趋势,你认为哪一种最有影响力?我们错过了什么吗?让我们知道!