【.com速递】由于COVID-19大流行,许多企业现在都在网上和云平台上开展业务,以保持市场竞争力。我们工作方式的这种转变加剧了技术解决方案之间的竞争,包括编程语言和框架。因此,运行web项目变得更加困难。考虑到技术的发展方向,您的首席技术官(CTO)和产品负责人可能会担心错失更多机会。他们担心做出错误选择的高成本,尤其是在开发或部署大型项目时。本文将介绍网络发展中的一些最新趋势和技术创新,探讨如何减少开发时间、提高性能和安全的技术栈。1.选择合适的基础设施选择合适的基础设施对于Web开发项目来说至关重要。架构备选方案的评估和比较应该考虑许多因素,例如性能、可扩展性、容量、维护成本等。这里出现的歧义可能会令人困惑。例如,没有DevOps的微服务架构不会运行得更快。而为了提高开发速度,云平台仍然是最好的选择之一,尽管它需要大量的开支。目前有两种主要类型的基础设施服务可用——后端即服务(BaaS)和平台即服务(PaaS)。开发者对采用BaaS和PaaS的态度以及在两者之间做出选择的态度是不同的。后端即服务(BaaS),也称为移动后端即服务(MBaaS),为开发者提供了一种服务,可以将web或移动应用程序连接到云服务。借助BaaS,公司可以缩短上市时间并降低基础设施管理成本。主要的BaaS包括Parse、Firebase、AWSAmplify、AzureMobileApps、CloudKit。功能即服务(FaaS)是另一种集成到BaaS中的云计算服务。它预见了一个用于开发、运行和管理应用程序功能的平台。该模型支持创建微服务应用程序。在FaaS的情况下,它的放大或缩小可以自动化。业界知名的FaaS有IBM的CloudFunctions、Amazon的AWSLambda、GoogleCloudFunctions、MicrosoftAzureFunctions、OpenFaaS。平台即服务(PaaS)为应用程序开发提供基础架构,允许客户设计、测试和托管。这种基于平台的服务作为软件在公共基础设施、私有云或公共云服务上运行。它包括各种模板、工具、库和代码。使用PaaS,可以在降低成本的同时加快项目开发过程。下图是跨各种类型基础架构的管理功能示例。请注意,这些函数的命名是通用的。2.JAMstack作为整体架构工具的替代品JAMstack一词是由NetlifyCEOMathiasBillman引入的,它意味着三个基本元素的组合:JavaScript、API和标记。它可以被视为一种用于快速、安全和可扩展的Web和应用程序开发的方法。有了JAMstack,开发者不用担心后端服务器逻辑,只需要关注表现层。大部分功能保留在客户端,其他需要大量手工操作的功能则通过第三方API实现。因此,许多SaaS应用程序和出色的网站都是使用JAMstack构建的。这种趋势为Web和应用程序开发提供了更多潜力,可以将更好的工具和技术(例如React、Webpack、React-router、GraphQL)结合到一个解决方案中。JAMstack工作流程(1)编写代码并将其推送到源存储库。(2)设计预建内容。(3)将构建的文件发送到内容分发网络(CDN)。(4)用户请求页面(不需要和源服务器交互,因为可以从CDN获取预建内容)。至于核心更新,它们是通过Git推送的。这允许使用最新的工具重建站点。像Gatsby或Hugo这样的静态站点生成器是此类工具的典型示例,因为它们是JAMstack方法不可或缺的一部分。Mozilla、Nike、SmashingMagazine等世界知名公司都在使用JAMstack。他们选择这种解决方案的原因各不相同,主要是通过在客户端解决任务来减少对服务器的依赖,加快加载速度,提高性能。根据Netlify的一项调查,Jamstack的典型业务用例包括消费者软件(45%)、内部工具(36%)和企业软件(35%)(总体占比高于100%)。JAMstack非常适合为每年为数百万用户提供服务的大型站点提供高可用性。但不适合web应用开发。3.静态站点生成器的广泛使用静态站点生成器(SSG)是一种软件应用程序,用于根据模板或组件和内容源创建HTML页面。SSG可以很好地替代数据库驱动的内容管理系统(CMS)。SSG的应用是开发新类或Web应用程序的一个越来越流行的趋势。原因就在于传统的Web应用栈和SSG的区别。静态网站生成器允许提前获取和提供页面视图,而无需等待页面被请求和生成。它涉及构建时网站的任何视图。由于预呈现,使用SSG开发的网站更能抵抗恶意软件。管理大型内容项目的任务正在通过Gatsby、Gridsome和Next到Nuxt等Web框架应用程序得到简化。值得注意的是,Figma和DigitalOcean基于GatsbyJS,被称为具有先进生态系统的快速流畅的框架。4.切换到HeadlessCMS选择HeadlessCMS的企业通过实施可扩展且灵活的解决方案而受益。在称为后端内容管理系统的HeadlessCMS中,作为表示层的“head”和作为内容存储库的“body”彼此分离。HeadlessCMS中设想的界面允许用户管理API和内容。但是在这个解决方案中,没有考虑内容如何显示。主要思想是存储和交付内容,使编辑能够共同开发它。如今,开发人员发现HeadlessCMS是一个合适的解决方案,因此我们可以看到基于Jamstack的HeadlessGhost、Strapi和NetlifyCMS越来越受欢迎。Tinder、Buffer、DuoLingo、Mozilla和DuckDuck在他们的博客中使用Ghost。IBM、沃尔玛、NASA和法国兴业银行更喜欢在生产中使用Strapi。据研究机构调查显示,2019年全球HeadlessCMS软件市场规模预估为3.285亿美元,预计到2027年将达到16.286亿美元;2020-2027年复合年增长率将达到22.6%。5.结合Serverless和微服务过去几年,后端发展趋势已经从单体应用转向微服务。结合Docker、Kubernetes和无服务器架构,微服务架构成为一种扩展具有指数级用户群增长的快速增长项目的方法。任何无服务器微服务都位于无服务器提供商的基础设施上,并在应用程序需要时启动。当企业对高速实施和减少投资感兴趣时,通常会选择FaaS。通过采用无服务器微服务,可以摆脱供应商锁定,企业可以根据项目选择LambdaServerless、GoogleCloudFunctions或MicrosoftAzureFunctions。6.访问自定义APIGraphQL用于提供API中数据的描述。它可以被视为基于REST架构的替代方案。与REST相比,GraphQL是一种适合请求特定数据的工具。为了呈现页面,大多数应用程序需要获取复杂的数据。使用GraphQL,可以在查询中获取所需的数据,而不会造成不必要的延迟。因此,用户将更快地运行应用程序。今天有数百家企业采用了GraphQL。企业网络应用程序开发具有与企业级业务需求相关的特征。使用正确的开发方法,企业应用程序可以帮助解决现有挑战并实现营销和其他业务目标,包括更高的投资回报率。由于企业的每个部门都有自己的挑战,因此软件解决方案应该与他们的需求相关。有时,企业通过选择应以一致方式相互通信的企业应用程序来获得运营优势。7.调整Web开发路线图从前端的角度考虑Web应用程序开发表明,创建一致的产品风格是一项挑战。对于许多团队在产品上进行协调的大型企业来说尤其如此。因此,为了创造有吸引力的数字产品,企业需要一支在设计系统方面具有深厚专业知识的团队。在这种情况下,风格指南使企业能够找到并使用他们需要的库和文档。指南是受版本控制的代码,因此它比任何文档都更清晰、更易于维护。在网络开发中,应用设计系统已成为团队和方向之间协作的好方法,从而更好地集中精力。开发端出现的挑战与很多原因有关,比如微服务的流行、基础设施即代码和容器编排到Kubernetes。应对这些挑战需要负责企业Web开发的平台工程团队的参与。8.促进复杂的解决方案应用在应用中采用人工智能解决方案需要大量的计算资源,但也可以使用云计算提供商提供的机器学习(ML)工具。这些工具有效但昂贵。在架构中采用任何新工具都会增加总体成本。部分对复杂工具的需求是可以避免的,企业必须考虑到这一点。值得注意的是,要解决机器学习挑战,您并不总是需要使用神经网络或GPU。简单模型和工具与适当Python代码的组合足以完成这些任务。在对遗留应用程序进行现代化改造时,任务是使用“由外而内”的方法完成的,即旧代码封装在新代码中。这种方法提高了管理功能的能力。遗留系统的替代方法是“由内而外”方法,这意味着将新的单页应用程序(SPA)的开头嵌入到包含旧SPA的HTML文档中。SPA框架用户可以容忍页面大小增加对性能的影响。SPA注入允许删除旧的SPA,直到新的SPA完全接管。9.仔细观察新机遇低代码或无代码平台已成为人们关注的焦点。它们适用于解决有限领域的特定挑战。低代码平台允许企业通过可视化界面和简单逻辑而不是密集编码来开发应用程序和流程。另一种有用的方法是为微前端导入地图。当多个微前端组合在一个应用程序中时,系统选择哪些微前端以及如何加载它们。开发人员专注于创建独特的解决方案或应用更大的框架。导入地图是对这两种情况都有帮助的新标准。为微前端导入地图可以准确分离关注点。JS代码指出要导入哪些部分,HTML中的脚本标记显示从何处加载前端。服务器用于生成HTML,因此可以在渲染时应用动态配置。今天,导入地图由Chrome维护。无论如何,SystemJSpolyfill可以实现更广泛的采用。10.开发企业工具对于很多需要报告前端bug的团队来说,Sentry是一个合适的工具。通过内置功能(用于拒绝错误的模式和分组工具)对在不同最终用户设备上检测到的错误进行分类和处理。将Sentry添加到持续交付(CD)管道后,它的调试变得更加方便和高效,因为更容易找出与哪些软件错误相关。Sentry是一种SaaS,但它确保公共访问并且对于较小的用例是免费的。MLflow是一个用于管理机器学习生命周期的开源平台。该工具由单独的组件组成,即运行、指标和项目的集合,以及用于在中央存储库中存储和发现它们的注册表。MLflow支持开放标准,可以与生态系统的各种工具相结合。MLflow在AWS和Azure中可用,并且正在为现代项目快速改进。该工具适用于管理和跟踪任务,并支持用户界面(UI)和基于API的模型。与MLflow相关的主要问题是单个平台中的大规模统一,包括模型评分和服务。持续集成(CI)服务器和开发工具的需求量很大。它们的范围从简单的云托管服务到支持构建机器队列的复杂代码定义管道服务器。今天有太多选择,因此引入GitHubActions被认为是一个关键举措。无论如何,GitHubActions使开发人员能够处理小型项目。内置工具位于源代码存储库中。社区围绕此功能聚集在一起,从而产生了用户贡献工具。这些工具正在通过GitHub市场实施。代码和Git历史记录可以在备用主机中导出,但GitHubActions上的开发工作流没有相同的功能。此外,开发人员应确定项目是否足够大以应用独立的管道工具。但对于小型项目,GitHubActions值得一看。Web开发的未来。NET5代表了将.NETCore和.NETFramework整合到一个平台中的重要一步。企业应该开始制定战略,将他们的开发环境(根据部署目标的框架的碎片化组合)迁移到单一版本的.NET5或.NET6。当它可用时,这种方法的优势将是一个通用的开发平台无论操作环境如何:Windows、Linux、跨平台移动设备(通过Xamarin)或浏览器(使用Blazor)。虽然多语言开发仍然是具有工程文化支持的企业的首选方法,但其他人会发现在单一平台上进行标准化以进行.NET开发更为有效。谷歌最近为Web开发人员提供了Flutter2.0。到目前为止,Flutter主要支持原生iOS和Android应用。然而,Flutter团队的愿景是支持在每个平台上构建应用程序。FlutterforWeb是朝这个方向迈出的一步,因为它有助于从相同的代码库为iOS、Android和浏览器构建应用程序以实现业务目标。为Web构建表单仍然是前端开发的长期挑战之一,尤其是React。ReactHookForm可以替代之前使用的Formik。ReactHooks在创建ReactHookForm时就已经存在,因此可以作为一流的概念使用:框架通过Hooks将表单元素作为不受控制的组件进行注册和跟踪,从而显着减少重新渲染的需要。它的大小和所需的样板代码数量也得到了简化。因此,开发人员可以使用现代工具为企业Web项目提供无缝的用户体验。以上概述了企业CTO在定义开发策略时应考虑的Web应用程序开发趋势。这些趋势可以补充涵盖其他趋势的项目——从支持物联网的语音搜索到运动设计,再到网络安全日益重要的趋势。原标题:10大Web发展趋势:如何在2021年保持领先,作者:YuriyLuchaninov
