【注】本文节译自:APIs and microservices: How to create modern enterprise architectures (bitpipe.com)
创建和发展现代化的企业架构并非易事:这意味着打破单一的、集中的系统,转而使用 API 和微服务等工具支持更多云功能和自适应环境。在本指南中,我们研究了这些类型的云连接架构的关键属性,并提供了有助于培养以 API 为中心的现代架构的实用建议。接下来,我们来探讨一下渐进式 Web 应用程序的出现。
云应用程序被认为是一种易于部署、修改、扩展和计量的服务。这为现代企业架构和应用程序设计须如何发展提供了线索。这就是为什么,以及未来是什么样子。
云服务本身建立在高度分布式的基础架构上,旨在对故障具有弹性,并且在不影响用户的情况下轻松移动和调整大小。使用应用程序接口或 API 访问和控制抽象服务,将用户与实现细节完全隔离。用户几乎不知道或不关心服务在哪里运行或在什么类型的系统上运行。这些核心属性巩固了云服务相对于传统单体软件的众多优势。
然而,这些相同的特性可以而且应该应用于构建在一个或多个云上的企业应用程序。事实上,使用共享、按需、可伸缩的云服务的细粒度微服务设计是任何现代企业架构的虚拟需求,这些架构期望满足数字业务的需求,服务于数百万移动客户、智能机器和连接的传感器。
互联的数字企业
企业架构必须改变的原因是高速连接和数十年来计算能力指数级摩尔定律改进的融合。这使得廉价智能手机市场趋于饱和,公用事业规模的 IT 服务提供商得以创建云服务。这些技术共同推动了业务的巨大变化。无论您将其称为“新连接经济学 ”(Gartner) 还是“无界企业 ”(AT&T Bell Labs),它都意味着企业以及随之而来的 IT 系统和应用程序将越来越多地与人交互,还将以自动化业务流程和智能设备的形式与设备、虚拟对象和其他软件交互。这是一种交互的爆炸式增长,Gartner 称之为数字网格。
这对企业架构的影响变得更像是大型云服务——想想谷歌、Facebook 和 AWS——而不是使用单体的、集中的系统来处理不断增长和越来越不可预测的工作负载。事实上,随着双模 IT、DevOps 和敏捷开发等概念的引入以加快数字业务创新的步伐,其影响将远远超出企业架构,深入到 IT 如何开展业务的核心。但是我们这里的重点是体系结构框架。
处理“连通性”
但是,如果组织选择实施它,演进的现代企业架构将类似于云。应用程序是否最终运行在 AWS 和 Azure 等共享的公共服务上;基于 Azure Stack、OpenStack 或 vCloud 等软件构建的私有基础设施;或者两者结合,架构必须假定共享的可用性,即使仅在组织内部,计量软件服务也可以立即实例化、修改、扩展和互连。随着组织构建的数字服务看起来更像 Facebook 和 Uber,应用架构必须类似于云原生服务,而不是隔离在单个盒子上的单体系统。
现代架构应具有以下关键属性:
- 将客户端接口与业务服务分离:应用程序将采用移动和浏览器设计范式,客户端专门用于 UI 和后端服务的业务处理。
- 天然分布式:后端应用程序将能够运行多个实例,提供弹性和可扩展性,同时支持持续、敏捷开发流程所需的无中断更新。
- 使用微服务:后端服务将针对特定功能而设计。它还可以在许多消费者之间共享,并可以轻松链接到特定应用程序的服务链中。将微服务视为用于构建任意复杂功能的构件。服务可以在自己的 VM 中隔离运行,也可以作为共享操作系统实例的容器运行。它们还具有固有的自计量功能,以支持基于消费的计费、细粒度的性能跟踪和自动扩展。
- 异步服务间通信:服务将使用消息总线交换信息,而不是到网络套接字和文件共享的持久连接。
- 丰富的服务组合:服务将公开元数据,允许它们作为广泛服务组合的一部分进行管理、使用和编排,包括移动和物联网应用后端、数据存储和分析、消息传递、监控和安全。
- 应用程序模板和设计模式库:
该组合是模板的基础,这些模板将服务组合在一起,以解决各种应用开发需求和设计模式,比如 Azure 提供的。开发人员库还包括标准数据模型,用于选择合适的数据服务,如对象存储、NoSQL、SQL、大数据,例如 Hadoop 和 Spark;以及满足特定需求的数据转换管道。 - 以 API 为中心:API 是主要的,通常也是唯一的服务接口。 客户端访问通常是无状态的,但任何状态都通过消息总线和后端数据服务处理,并且只有最少的客户端支持。
- 自动化基础设施:服务链可以从用于部署、扩展、移动和停用云实例的基础设施模板中实例化。 服务计量和仪表用于对资源使用情况发出警报、活动、错误状态、并触发自动修复,例如缩放、重启和人工通知。
细粒度的安全性:对单个服务的访问通过基于角色的访问控制列表进行控制,策略定义为应用程序模板的一部分。 用户身份和角色被集中管理,并可能与来自业务合作伙伴或公共在线服务的外部身份管理系统联合。
待办事项清单
拥有正确的企业架构可能是未来数字业务计划成败的关键。 对于 CIO 和 IT 高管来说,这意味着架构应该是执行层的优先级,它是通过 IT、应用程序开发人员和业务线经理之间的密切协作开发。 对于 IT 经理和技术专业人士来说,企业架构的重要性需要一个由多学科专家组成的专门团队——例如 IT 运营、AppDev、DevOps、云运营和数据科学家等——他们的重点是开发、改进、更新和实施架构。
不断发展的企业架构是不断发展的 IT 的一部分,它必须专注于灵活的服务创新、开发和实施,以响应动态的数字业务需求。因此,它可能会伴随 IT 内部的结构和文化变化,例如双模式和 DevOps 组织以及持续交付流程。对于 IT 专业人员来说,这是最具挑战性但又最激动人心的时刻之一。在网页和原生应用之间架起桥梁
移动应用和网站在用户体验方面历来采用不同的模式。让用户访问网站比安装应用程序要容易得多。但移动应用往往会促进更具吸引力的用户体验。一种全新的全渠道应用交付模式,称为渐进式 Web 应用,有望提供两全其美的服务,并且是旧金山 O'Reilly Fluent 会议的热门话题。
谷歌 Chrome 团队的一名资深软件工程师 亚历克斯·拉塞尔(Alex Russell)表示,他们之所以选择“渐进式 Web 应用”这个词,是因为它们可以在标签中开始生活,并逐渐变得像应用程序一样。有几个因素正在推动这一趋势,包括更好的缓存技术和使 Web 应用的行为更像移动应用的新技术。
一些先驱企业已经证明了使用新模式有利于增加用户访问量和在网站上花费的时间。Flipkart 开始实施渐进式应用,并且发现用户花在新网站上的时间增加了三倍,每周访问者增长 40%。他们还发现 63% 转化率来自主界面访问者,他们甚至还没有发布推送通知。解决分布式问题
“我认为分发是软件中最困难的问题,”Russell 说。在早期,用户必须从软盘安装应用程序。现在,让用户安装应用程序要容易得多,但要让用户主屏上花费更多的精力和空间,仍然有很多阻力。网络是最便捷的分发平台,但令人惊讶的是,我们还没有转向通过 URL 分发移动应用。Web 应用程序可以更定期地更新,也可以通过单击链接进行更新,开发无需通过应用商店的审批流程。
但根据 comScore Inc. 的研究,用户往往会将大约 87% 的时间花在移动应用上,而花在智能手机上的移动 Web 应用上的时间只占 13%。另一方面,大多数用户将大部分时间花在顶级应用上,而其他人则处于休眠状态。由于这些趋势,企业最终会花费大量资金让用户安装其软件的移动应用版本。许多这些应用最终成为永远不会被使用的僵尸应用。这需要付出很大代价,因为其中许多应用都无法进入顶层。
与此同时,移动网站也吸引了许多未安装该应用的独立访问者。这对于应用使用较少的企业(例如零售商)很重要。用户平均每月使用 27 个应用,但访问超过 100 个移动网站。Russell 表示,用户对下载原生移动应用的空间、带宽和时间感到焦虑。超越技术
一些处理密集型应用可能会像原生移动一样表现得更好。但 Russell 表示,他相信移动网络平台对于当今的大多数应用来说已经足够了。他说,阻碍移动网络应用使用的三个主要因素是缺少主屏、缺少推送通知托盘访问和缺少离线访问。
主屏访问
Chrome 团队最近发布了 Web 应用清单(Web App Manifest)规范。早期版本可在所有 Android 平台上运行。这提供了一个框架,用于告诉移动浏览器某个特定链接实际上是一个移动应用。 这样可以更轻松地将站点作为单独的窗口重新启动,该窗口的外观和行为类似于其他本机应用程序。
开发人员只需在站点上包含一个清单文件,其中包含一个指向图标和应用名称的链接。Russell 说这是必要的,因为 Web 还没有应用结构的概念。直觉上,人们知道博客与博客中的条目是不同的。清单提供了一种向浏览器显式声明这种区别的方法。突破新极限
去年,Chrome 团队在 Chrome 桌面版和 Android 版上推出了推送通知。 这使得 Web 应用程序可以更轻松地将更新定向到推送通知托盘中。 此功能也可用于三星和 Firefox 浏览器,并生成行为与本机应用程序非常相似的通知——即使在浏览器关闭时也是如此。 用户必须提供从特定站点接收通知的权限。
这种策略对零售商的网站很有效,例如,他们可能想向访问商店的用户推出优惠券。它将允许用户接收这些更新,而无需在主屏上安装任何应用程序。零售商 Beyond The Rack 报告称,其 50% 的访客来自发布推送通知。他们还发现在网站上花费的时间和转化率有所增加。使用 Service worker 进行更好的缓存
最后一个阈值是支持有效的离线功能。谷歌多年来一直致力于解决这个问题。最初,Google Gears 允许通过一组狭窄的方式来考虑打造离线体验。应用程序缓存与现在被纳入 HTML5 规范的设计相同。
谷歌现在引入了服务工作者的概念。这种方法允许开发人员指定服务工作者在移动设备离线或在线时的行为方式。Russell 说离线只是网络连接不稳定的一个特例。这种方法允许应用程序提供令人满意的用户体验,而不管其连通性如何。应用程序外壳可以在重复访问时立即缓存和加载。“现在,有了 Service Worker,你可以在没有 DNS、http 或 TLS 辅助的情况下将内容投放到屏幕上,”Russell 说。个人、网络广播、播客、视频、虚拟贸易展览、研究报告等——利用技术提供商的丰富研发资源来应对市场趋势、挑战和解决方案。我们的现场活动和虚拟研讨会为您能够就您每天面临的问题和挑战获得中立的供应商评论、专家评论和建议。我们的社交社区 IT 知识交流使您可以与同行和专家实时共享现实世界的信息。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。