云原生应用

menu icon

云原生应用

探索云原生应用以及它们如何推动企业内的创新和实施速度。

什么是云原生?

云原生不是指应用驻留位置,而是指其构建和部署方式。

  • 云原生应用由不同的可复用组件(称为微服务)组成,旨在集成到任何云环境中。
  • 这些微服务充当构建块,通常打包在容器中。
  • 微服务作为整体构成一个应用,但每个微服务都可以单独扩展,不断改进,并通过自动化和编排过程快速迭代。
  • 每个微服务的灵活性都增强了云原生应用的敏捷性和持续改进。

在视频“什么是云原生?”(4:36) 中,Andrea Crawford 概述了一些关键概念:

您还可以深入了解 IBM Cloud 播客,这是由七集组成的播客系列,名为“云原生的一切”。

微服务和容器

微服务(也称为微服务架构)是一种架构方法,单个应用由许多松散耦合并且可独立部署的小型组件或服务组成。 这些服务(也称为微服务)通常具有自己的技术栈,包括数据库和数据模型,并通过 REST API、事件流和消息代理的组合相互通信。

因为微服务可以独立部署和重新部署,而不影响彼此或影响最终用户体验,因此它们完美地匹配自动化迭代式交付方法,例如持续集成/持续部署(CI/CD) 或 DevOps

除了用于创建全新的云原生应用外,微服务还可用于对传统的单体式应用进行现代化改造

最近对 IT 主管、开发人员主管和开发人员的 IBM 调研中,87% 的微服务用户同意值得花费资金和努力以采用微服务。 可使用以下交互式工具,探讨有关微服务的优势和挑战的更多观点:

(资料来源:"企业中的微服务之 2021:切实的益处,值得承受挑战。

开发人员通常在容器中部署微服务。容器是轻量级的可执行应用组件,用于将应用源代码 (在本例中,是微服务代码)和在任何环境中运行代码所需的所有操作系统 (OS) 库与依赖关系组合在一起。 容器是现代云原生应用的事实上的计算单元,比虚拟机 (VM) 更小、更高效、移植性更高。

容器通过在混合多云环境(公有云、私有云和本地基础架构)中实现一致的部署和管理体验, 放大微服务的优势。 但随着云原生应用的激增,容器及其管理复杂性也与日俱增。 使用容器化微服务的大多数组织也使用容器编排平台(如 Kubernetes)以大规模自动执行容器部署和管理。

要了解有关容器和容器化的更多信息,请参阅“容器:完整指南”和“容器化:完整指南”。

详细了解为什么要使用微服务和容器作为架构构造。

优点和缺点

IBM 客户发现自己投入越来越多的精力来改进现有应用,构建新应用以及增强用户体验。 云原生应用通过提高应用性能、灵活性和可扩展性,以满足这些需求。

优势

  • 与传统的单体式应用相比,云原生应用更易于管理,因为可使用敏捷方法和 DevOps 流程进行迭代式改进。
  • 云原生应用由各个微服务组成,可逐步改进,并且可自动持续地添加新的和改进的应用功能。
  • 改进可采用非侵入的方式进行,不会造成宕机,也不会影响最终用户体验。
  • 通过弹性基础架构支持云原生应用,更轻松地进行缩放。
  • 云原生开发过程能够更紧密地匹配当今的业务环境所要求的速度和创新。

缺点

  • 虽然微服务支持迭代式应用改进方法,但也产生了管理更多元素的需求。 云原生应用不再是一个大型应用,需要管理更多小型的不同服务。
  • 云原生应用需要更多工具集以管理 DevOps 管道,取代传统监控结构以及控制微服务架构。
  • 云原生应用支持快速开发和部署,但也需要一种企业文化,以适应创新的步伐。

应用示例

云原生应用通常具有相当具体的功能。 思考一下云原生应用如何在旅行网站上使用。 站点所涵盖的每个主题(包括航班、酒店、汽车、特别活动)都是自己的微服务。 每个微服务可推出独立于其他微服务的新功能。 特别活动和折扣也可以独立扩展。 虽然旅行网站作为一个整体呈现给客户,但每个微服务保持独立,可以根据需要进行缩放或更新,而不会影响其他服务。 以下是其他云原生应用的几个示例。

IBM Cloud Garage 为 IBM 客户提供咨询专业知识,帮助他们快速构建可扩展的创新型云原生应用。 它提供创新中心,所有规模的企业都可以设计和构建应用以满足现实世界的业务需求。

美国航空公司 (2:50) 与 IBM 合作,构建动态重新订票应用,用于在恶劣天气模式期间启动。 该应用通过向用户提供更多信息和改进的重新订票流程,改善了客户体验。

XComP Analytics (1:56) 是用于教育和培训的分析平台,他们需要解决分析问题,但在纠正一个问题的过程中,该公司与 IBM Cloud Garage 合作,开发了 6 个新产品。 该解决方案包括使用微服务架构并插入 IBM Watson 以解决特定分析问题。

UBank (2:45) 存在业务需求,需要改进家庭贷款产品并帮助客户完成家庭贷款流程。 该公司的智能助理应用 RoboChat 使用 IBM DevOps 工具链构建,满足了这一需求。 使用 RoboChat 的客户的房屋贷款完成率提高了 15%。

医学研究的一个关键点是就向医生提供有关患者治疗最佳实践的建议。 然而,揭示最佳实践的医学研究需要 17 年才能转化为实际的医学实践。 ThinkResearch (2:06) 使用 IBM Cloud,在医疗点提供最佳医疗信息。 通过使用 IBM Cloud 基础架构和 Kubernetes 管理服务,ThinkResearch 的 DevOps 团队可以专注于创新和患者医疗,而不是基础架构。

开发原则

无论是创建新的云原生应用还是更新现有应用,开发人员都遵循一组一致的原则:

  • 遵循微服务架构方法:将应用分解为单功能服务(称为微服务)。 微服务松散耦合,但保持独立,能够逐步进行自动化和持续的应用改进,而不会导致宕机。
  • 依靠容器实现最大程度的灵活性和可扩展性:容器软件包及其所有代码和依赖关系位于同一位置,使软件能够随处运行。 这就能够在多云环境中实现最大程度的灵活性和可移植性。 容器还能够使用用户定义的 Kubernetes 编排策略,快速进行缩放。
  • 采用敏捷方法:敏捷方法有助于加快创建和改进流程。 开发人员可以根据用户反馈快速迭代更新,使运行的应用版本尽可能地满足最终用户的期望。

存储

云原生应用通常依赖于容器。 容器的吸引力在于非常灵活、轻便而且可移植。 早期使用容器的用户往往侧重于无状态应用,无需将用户数据从一个用户会话保存到下一个用户会话。

但是,随着更多核心业务功能移至云端,必须在云原生环境中解决持久存储问题。 这就要求开发人员考虑采用新方法来实施云存储

正如云原生应用开发采用微服务和模块化方法,必须使用云原生存储。 云原生数据可能位于任意数量的位置 - 如事件日志或系统日志、关系数据库以及文档或对象存储。

数据位置、保留时间要求、可移植性、平台兼容性和安全性仅仅是开发人员在规划云原生存储时必须考虑的几个方面。

了解 IBM Cloud Object Storage 如何为云原生应用创建持久数据存储。

云原生应用 vs. 传统应用

云原生 vs. 支持云计算

支持云的应用的开发初衷是部署在传统数据中心内,但后来更改为在云环境中运行。 但是,云原生应用仅在云中运行。 开发人员将云原生应用设计为可扩展、独立于平台以及由微服务组成。

云原生 vs. 云就绪

在云计算的短暂历史中,“云就绪”的含义已多次变化。 最初,该术语适用于旨在通过因特网工作的服务或软件。 现在,该术语更常用于描述在云环境中工作的应用,或已针对云环境重新配置的传统应用。 术语“云原生”的历史要短得多,是指从一开始就是为了仅在云中运行而开发的应用,以及为了利用云架构或已使用云原生原则重构和重新配置的现有应用的特征而开发的应用。

云原生 vs. 基于云

基于云的服务或应用通过因特网交付。 字面上它是适用于任何数量的云产品的通用术语。 云原生是更具体的术语。 云原生描述旨在云环境中工作的应用。 该术语表示依赖于微服务、持续集成和持续交付 (CI/CD) 并可通过任何云平台使用的应用。

云原生 vs. 云优先

云优先描述的是企业战略,组织承诺在启动新的 IT 服务、更新现有服务或更换原有技术时首先使用云资源。 成本节约和运营效率推动这一战略的发展。 云原生应用与云优先战略完美匹配,因为它们仅使用云资源,并且旨在利用云架构的有益特性。

云原生与 IBM

满足更高要求的用户期望意味着需要采用正确的架构、实践和技术。 如果您希望在云之旅中通过构建新应用以及对现有应用进行现代化改造来增强用户体验,那么可采用云原生方法,提高应用的性能、灵活性和可扩展性。

采取下一步行动:

  • 了解如何开始使用 IBM 云原生服务以先前发展。
  • 了解 IBM 如何帮助引领云原生专业服务发展之路。
  • 通过此教程,尝试对现有应用进行现代化改造,以便实现云原生部署。
  • 探索 IBM Cloud Associate Solution Advisor 基于角色的认证中包含的云原生和多云课程及徽章。
  • 通过现代集成、安全性和身份课程培养技能,比如 IBM Cloud Professional Developer 基于角色的培训和认证中包含的“部署云原生架构和应用”以及“准备云原生安全性”等课程。

立即开始使用 IBM Cloud 帐户