什么是云原生?
云原生应用由不同的可复用组件(称为微服务)组成,旨在集成到任何云环境中。
黑色和蓝色背景
什么是云原生?

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

  • 云原生应用由不同的可复用组件(称为微服务)组成,旨在集成到任何云环境中。

  • 这些微服务充当构建块,通常打包在容器中。

  • 各种微服务结合起来,作为整体构成一个应用,但每个微服务都可以单独扩展,持续改进,并通过自动化和编排过程快速迭代。

  • 每个微服务的灵活性增强了云原生应用的敏捷性和持续改进能力。

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

微服务和容器

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

因为微服务可独立部署和重新部署,而不会影响或中断最终用户的体验,因此对于自动化迭代式交付方法(如持续集成/持续部署 (CI/CD) 或 DevOps)而言,微服务是绝配。 

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

在 IBM 对 IT 高管、开发高管和开发人员进行的一项调研中,87% 的微服务用户同意,为采用微服务而花费精力和成本是物有所值的。

开发人员通常在容器内部署微服务;容器作为可执行的轻量级应用组件,结合了应用源代码(在本文所讲述的情况下,是微服务代码)以及在任何环境中运行这些代码所需的所有操作系统 (OS) 库和 依赖项 。  容器是现代云原生应用的事实 计算单元,与虚拟机 (VM) 相比,体量更小,资源效率更高,可移植性更好。  

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

为什么要使用微服务和容器?
优点和缺点

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

优点

  • 与传统的单体式应用相比,云原生应用更易于管理,因为可使用敏捷方法和 DevOps 流程进行迭代式改进。

  • 云原生应用由多个微服务组成,这些微服务可逐步改进,并且可自动持续地添加新的和改进的应用功能。

  • 改进可采用非侵入方式进行,不会造成宕机,也不会影响最终用户体验。

  • 通过富有弹性的基础架构支持云原生应用,更轻松地进行缩放。

  • 云原生开发过程更紧密地契合当今业务环境所要求的执行速度和创新能力。

缺点

  • 虽然微服务支持迭代式应用改进方法,但这样做需要管理更多要素。 云原生应用并非单一的大型应用,而是需要管理众多不同的小型服务。

  • 云原生应用需要额外的工具集,以管理 DevOps 管道,取代传统监控结构以及控制微服务架构。

  • 云原生应用支持快速开发和部署,但也需要营造一种企业文化,以适应创新的步伐。
应用示例

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

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

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

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

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

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

开发原则

无论是创建新的云原生应用还是对现有应用进行现代化改造,开发人员都须遵循一组统一的原则:

  • 采用微服务架构方法:将应用分解为称为微服务的单一功能服务。 微服务松散耦合,但保持独立,能够自动地逐步进行持续改进,而不会导致宕机。

  • 依靠容器获得最大程度的灵活性和可伸缩性:容器将所有代码和依赖项打包成软件,使其可以在任何环境中运行。 从而能够在多云环境中实现最大程度的灵活性和可移植性。 容器还能够使用用户定义的 Kubernetes 编排策略,快速进行缩放。

  • 采用敏捷方法:敏捷方法有助于加快创建和改进过程。 开发人员可以根据用户反馈快速迭代更新,使应用的工作版本尽可能满足最终用户的期望。
存储

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

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

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

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

了解云原生数据存储
云原生应用与传统应用

云原生云应用与支持云的应用

支持云的应用最初开发时是为了在传统数据中心内部署,但后来改为在云环境中运行。 而云原生应用是只为在云中运行而构建的。 因此,云原生应用具有可扩展、独立于平台以及由微服务组成等特点。

云原生应用与云就绪的应用

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

云原生应用与基于云的应用

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

云原生应用与云优先战略

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

相关解决方案
IBM 云原生

IBM Cloud 是云原生应用开发领域的领导者,也是值得信赖的合作伙伴,能够在高度开放、高度安全而且高度集成的平台上快速构建企业应用。

探索 IBM 云原生
Red Hat OpenShift on IBM Cloud

只需点击操作,即可为容器化应用部署高度可用、完全管理的 Kubernetes 集群。

探索 Red Hat OpenShift on IBM Cloud
IBM Cloud Code Engine

以无服务器工作负载的形式运行容器映像、批处理作业或源代码 — 无需调整规模、部署、联网或扩展

探索 IBM Cloud Code Engine
资源 什么是微服务?

在微服务架构中,每个应用都由许多较小的、松散耦合且可独立部署的服务组成。

什么是容器?

容器是软件的可执行单元,它打包了应用代码、库和依赖项,因此可以随处运行 — 无论是在桌面系统、传统 IT 环境中还是在云端。

什么是 Kubernetes?

Kubernetes 是开源容器编排平台,用于自动部署、管理和扩展容器化应用。

采取下一步行动

过去 20 年中,IBM 一直大力投资开源、社区和治理领域,包括云原生计算基金会。目前正在生产和运行的 Kubernetes 集群超过 20000 个,IBM Cloud 无疑是最合适的平台。它提供最高的数据加密行业标准之一,并遵循 30 多个合规性计划。

探索 IBM Cloud 上的云原生