云原生架构是一种设计方法,有助于实现云原生应用程序的动态敏捷开发。这种云架构模式提供了一种可扩展性更高、可自定义的模块化基础架构,不仅能提高效率和生产力,还能更轻松地在各个云提供商之间转移工作负载,或独立部署服务。
云原生应用程序概述
云原生应用程序是一种软件程序,专为在云计算环境中运行而构建。云原生应用程序充分利用云交付模式的特性,借助云的弹性、规模、复原力与灵活性,帮助企业更快速、更敏捷地迁移。云原生应用程序采用微服务架构而构建,可以在不影响服务交付的前提下,快速且频繁地更新应用程序,助力企业获得竞争优势。
云原生应用程序由哪几部分组成?
云原生应用程序采用多项关键技术构建。
- 微服务 是云原生应用程序的基本构成要素。这些可重复使用的程序松散地结合在一起,可以集成到任何云环境中。各项微服务协同工作,确保应用程序顺畅运行,但每项微服务都能独立扩展且持续迭代优化,令云原生应用程序的开发过程更迅捷、更灵活。微服务通常部署在容器中。
- 容器 汇集了应用程序的所有依赖关系,例如源代码、操作系统以及各种库,使应用程序代码能在任何环境中运行。即使各个云原生应用程序依赖于互不相同的操作系统,容器仍能让它们在同一台服务器上同时运行。
- API (应用程序编程接口)是资源的集合,通常以 URL 和端点为主,方便应用程序与另一个应用程序进行通信和集成。
- 软件定义的基础架构 通过可轻松扩缩的虚拟化硬件功能代替交换机等硬件。
- 动态编排 可大幅简化容器生命周期管理、资源管理、负载平衡、内部故障后的重启安排以及服务器群集节点配置。
- 服务网格 是一种软件层,用于管理多个微服务之间的通信。服务网格在应用程序需要相互通信的各部分之间路由流量。
- 后端服务 包括消息代理、数据存储、安全服务以及监控功能等资源。
- 自动化 支持快速配置云环境功能与更新,在不干扰用户体验的情况下缩短发布和优化时间。
云原生应用程序是如何开发的?
开发人员运用多种工具来管理云原生应用程序的开发流程。Kubernetes 平台用于管理和编排 Linux 容器。开源平台 Docker 用于创建、部署以及管理使用通用操作系统的虚拟化应用程序容器。代码版本控制系统 GitLab 拥有可自动进行测试与部署的持续集成/持续开发 (CI/CD) 软件。创建新闻、聊天等实时微服务用到了许多种编程语言。以 Terraform 为代表的基础架构即代码工具用于管理部署版本,方便开发人员查看资源更改时间及位置。
云原生应用程序与基于云的应用程序有何区别?
云原生应用程序专为云环境而设计。基于云的应用程序托管于云端,可以利用云基础架构的弹性和可扩展性,但无法充分利用云架构的固有设计。
云原生应用程序具有哪些优势?
- 降低成本。通过云原生应用程序,企业能充分利用云服务的可扩展性,从而免去过度配置成本。云原生应用程序还能帮助企业省去购买和维护本地硬件及软件的费用。
- 改善敏捷性。云原生应用程序内的微服务均可独立扩展,方便快速更新软件程序的部分组件,而无需更新整个应用程序。云原生应用程序可在整个网络中灵活部署,且更易开发迭代。
- 可移植性。云原生应用程序可以在各种基础架构之间轻松移植,因此企业将不再受缚于单个供应商的服务。
- 提升可靠性。使用容器和云原生应用程序意味着当某个微服务出现故障时,云原生应用程序依然能继续运行,且停机时间非常短。
- 自动化管理。云原生应用程序可自动部署功能与更新,简化了 IT 团队的工作任务。
- 清晰洞察。微服务架构内部固有的隔离性使 IT 团队更易理解各种应用程序如何协同工作。
- 可扩展性巨大。云原生应用程序额外增加了可横向扩展的商品服务器,利用软件定义的基础架构来大幅降低对硬件的依赖性。
- 零停机。以 Kubernetes 为代表的编排解决方案使云原生应用程序几乎不用停机就能更新。
云原生应用程序面临哪些挑战?
- 实施云原生架构需要既定的 DevOps 实践,且这些实践要有能力应对开发微服务所需的分布式工作流程和责任。
- 云原生应用程序的多次迭代管理起来十分复杂,可能会令开发团队和 IT 团队不堪重负。
- 快速扩展云原生应用程序的所需容器可能会为企业云安全带来风险,若未能适当监控和修复这些风险,便可能招致入侵。
- 从传统应用程序迁移到基于微服务和容器构建的应用程序,可能造成相互依赖性或应用程序功能方面的复杂问题。
- 鉴于种种针对数据位置、保留需求以及数据隐私的法规与要求,开发人员不得不寻找新的云存储和云数据库解决方案,以匹配灵活的云原生架构。
如何进行云原生应用程序开发?
构建云原生应用程序依靠连续集成 (CI) 和连续交付 (CD) 实践。CI 指频繁地对代码进行微小更改,以便更容易、更快速地识别和修复问题。CD 确保微服务时刻处于就绪状态,方便随时部署到云端,依靠软件自动化工具降低更改时的风险。
云原生应用程序与传统应用程序有何区别?
与云原生应用程序相比,传统单一软件程序的构建时间更长,发布频率也远低于前者。
云原生应用程序可在已抽象化的操作系统中运行,而传统应用程序则仰赖底层操作系统、硬件和存储之间的紧密依赖关系,使其难以在新的基础架构中迁移和扩展。
云原生应用程序允许 IT 团队进行适当规模的资源配置,按需分配资源,而非为了满足潜在的需求高峰,配置尺寸过大、超额构建的基础架构。
常见问题
云原生应用程序是一种软件程序,专为在云计算环境中运行而构建。云原生应用程序充分利用云交付模式的特性,借助云的弹性、规模、复原力与灵活性,帮助企业更快速、更敏捷地迁移。
Kubernetes 是一个开源平台,用于管理容器内的应用程序集群和服务集群。借助托管 Kubernetes,软件开发团队无需再进行 Kubernetes 部署配置和维护工作。
云原生计算基金会 (Cloud Native Computing Foundation, CNCF) 是一个开源软件基金会,致力于确保云原生技术方便可得、易于采用。
云内容交付网络 (CDN) 是一种地理分布式服务器网络,方便用户更快地访问内容、获得更卓越的在线体验。CDN 将内容存储或缓存在世界各地的代理服务器中,并从距离用户最近的服务器提供内容,从而降低延迟。云 CDN 依靠云计算资源来管理和运营 CDN,而非依靠电信服务。
客户为什么选择 Akamai
Akamai 是一家专注于网络安全和云计算的公司,致力于支持并保护在线商业活动。我们卓越的安全解决方案、出色的威胁情报和全球运营团队可提供深度防御,保护各地的企业数据和应用程序。Akamai 的全栈云计算解决方案可在全球分布广泛的平台上提供高性能和经济实惠的服务。全球多家企业坚信,Akamai 能够提供卓越的可靠性、规模和专业知识,帮助企业满怀信心地实现业务增长。