现代云原生设计理念

简介: 你会如何设计云原生应用程序?需要遵循哪些原则、模式和最佳实践?需要特别关注哪些底层/操作?

十二要素应用程序


目前被普遍认可的基于云的方法论是"十二要素应用程序",它给出了开发人员要遵循的一组原则和实践,帮助构建针对现代云环境优化的应用程序。


尽管适用于任何基于Web的应用程序,但许多从业者都将“十二要素”视为构建云原生应用程序的坚实基础。基于这些原则构建的系统可以快速部署和扩展,并可以添加功能以对市场变化做出快速反应。


重申“十二要素”方法论:


要素 描述
Code Base 代码仓库中一套代码,多处部署
Dependencies 每个微服务显式声明并打包自己的依赖项、变更项
Configurations 在环境中外挂配置
Backing Services 将支撑性服务(数据存储,缓存,消息代理)看做附加资源,通过可寻址的URL公开
Build, Release, Run 严格区分构建和运行阶段,现代CI/CD技术实现了这一原则。
Processes 将应用程序作为一个或多个无状态进程执行
Port Binding 通过端口绑定暴露服务
Concurrency 对进程模型进行横向扩展
Disposability 快速启动和正常关闭可最大程度地提高鲁棒性
Dev/Prod Parity 保持开发、生产尽可能相似
Logging 将日志视为事件流,使用事件聚合器将事件传递到数据挖掘/日志管理工具
Admin Processes 用一次性动作 执行管理任务


凯文·霍夫曼(Kevin Hoffman)详细介绍了最初的12个要素(写于2011年)。此外,他针对现代云应用程序提出另外三个要素。


新要素 描述
API First 使一切成为服务(如果你的代码将被前端、网关或其他服务使用)
Telemetry 在程序设计中包含遥测、健康检查
Authentication/Authorization 一开始就实现身份认证和鉴权


关键的设计考量


除了十二要素方法提供的指导之外,还必须注意几个关键的设计考量。


😇Communication 通信


  • 前端如何与后端服务通信?  

        是直接通信吗?还是提炼出后端网关 (提供灵活性、管控力和安全性) ?


  • 后端服务之间如何通信?

        直接Http调用 (可能导致耦合,影响性能和敏捷性) ? 是考虑使用queue/Topic

技术解耦消息?


第4章“云原生通信模式”详细介绍了通信。


😇Resiliency 弹性


微服务架构将系统从进程内网络通信转移到进程外网络通信。

 

在分布式体系结构中,


  • 当服务B不响应来自服务A的网络请求,会发生什么?  


  • 当服务C临时不可用,其他调用C的服务被阻塞又该怎么办?


第6章“云原生弹性”详细介绍了弹性。


😇Distributed Data 分布式数据


按照设计预期,每个微服务都内嵌自己的数据,通过公开接口暴露。


如果是这样,如何实现跨多个服务的数据查询/事务?


分布式数据将在第5章“云原生数据模式”中详细介绍。


😇Identity 身份


您的服务将如何识别谁在访问它以及他们拥有哪些权限?


身份将在第8章“身份”中详细介绍。

相关文章
|
7月前
|
Cloud Native Devops 持续交付
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
【云原生|云原生基础】什么是云原生?一文给你讲清楚!
2147 1
|
2月前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践####
【10月更文挑战第16天】 云原生,这一概念自提出以来,便以其独特的魅力和无限的可能性,引领着现代软件开发与部署的新浪潮。本文旨在探讨云原生架构的核心理念、关键技术及其在实际项目中的应用实践,揭示其如何帮助企业实现更高效、更灵活、更可靠的IT系统构建与管理。通过深入剖析容器化、微服务、持续集成/持续部署(CI/CD)等核心技术,结合具体案例,本文将展现云原生架构如何赋能企业数字化转型,推动业务创新与发展。 ####
136 47
|
1月前
|
Cloud Native Devops 持续交付
云原生架构的演进与实践
本文深入探讨了云原生架构的核心概念、技术组件及其在现代软件开发中的应用。通过分析容器化、微服务、持续集成/持续部署(CI/CD)等关键技术,揭示了这些技术如何共同促进应用程序的灵活性、可扩展性和高可用性。文章还讨论了云原生架构实施过程中面临的挑战和最佳实践,旨在为开发者和企业提供一套实用的指导方针,以便更有效地利用云计算资源,加速数字化转型的步伐。
46 5
|
1月前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用架构中的实践与思考
【10月更文挑战第38天】随着云计算的不断成熟和演进,云原生(Cloud-Native)已成为推动企业数字化转型的重要力量。本文从云原生的基本概念出发,深入探讨了其在现代应用架构中的实际应用,并结合代码示例,展示了云原生技术如何优化资源管理、提升系统弹性和加速开发流程。通过分析云原生的优势与面临的挑战,本文旨在为读者提供一份云原生转型的指南和启示。
39 3
|
6月前
|
存储 Cloud Native 持续交付
云原生架构:未来软件开发的引擎
【6月更文挑战第13天】随着企业数字化转型的加速,云原生技术已成为推动现代软件交付和运维的关键力量。本文将深入探讨云原生架构的核心概念、优势以及它如何重塑软件开发流程,为企业带来前所未有的敏捷性、可扩展性和成本效率。
211 1
|
6月前
|
运维 负载均衡 Cloud Native
云原生架构技术之云原生微服务
微服务模式将后端单体应用拆分为松耦合的多个子应用,每个子应用负责一组子功能。这些子应用称为“微服务”,多个“微服务”共同形成了一个物理独立但逻辑完整的分布式微服务体系。这些微服务相对独立,通过解耦研发、测试与部署流程,提高整体迭代效率。此外,微服务模式通过分布式架构将应用水平扩展和冗余部署,从根本上解决了单体应用在拓展性和稳定性上存在的先天架构缺陷。但也要注意到微服务模型也面临着分布式系统的典型挑战:如何高效调用远程方法、如何实现可靠的系统容量预估、如何建立负载均衡体系、如何面向松耦合系统进行集成测试、如何面向大规模复杂关联应用的部署与运维。
255 4
|
2月前
|
运维 Kubernetes Cloud Native
云原生之旅:从容器化到微服务架构的演进之路
在数字化转型的浪潮中,云原生技术如同一股清流,为现代软件开发和运维带来革命性的变化。本文将通过深入浅出的方式,探索云原生的核心概念、关键技术以及它们如何共同塑造了今天的云基础设施和服务模式。我们将一起走进云原生的世界,了解它如何影响应用程序的设计、部署和扩展,并揭示这一趋势背后的哲学和实践。
33 1
|
4月前
|
Kubernetes Cloud Native 云计算
云原生之旅:从容器化到微服务架构的演进
【8月更文挑战第30天】在数字化浪潮中,企业纷纷寻求更高效、灵活的IT解决方案。云原生技术以其独特的优势成为转型的关键。本文将带你了解云原生的核心概念,探索容器化技术的奇妙之处,深入微服务架构的设计哲学,并分享如何在云平台上实现这一切。准备好,我们将启航进入云原生的世界,解锁数字化转型的秘密。
|
6月前
|
监控 Cloud Native 持续交付
云原生架构:从理念到实践的全面解析
云原生架构已经成为现代软件开发和部署的核心理念。它不仅改变了传统的软件开发模式,还为企业提供了更高的灵活性、可扩展性和可靠性。本篇文章将深入探讨云原生架构的基本概念、关键组件以及实际应用案例,帮助读者更好地理解和应用这一先进的技术框架。
346 3
|
7月前
|
Cloud Native 安全 持续交付
构建未来应用:云原生架构的演进与实践
【5月更文挑战第20天】 在数字化转型的浪潮中,云原生技术以其独特的弹性、可扩展性和敏捷性成为推动企业IT架构现代化的关键力量。本文将深入探讨云原生的核心概念、关键技术以及如何在企业环境中实施云原生架构。我们将从容器化技术的基本原理出发,解析微服务架构的设计原则,并讨论如何通过持续集成和持续部署(CI/CD)实现快速迭代。此外,文章还将涉及如何利用云平台的资源和服务优化云原生应用的性能和安全性。通过对云原生生态的深度剖析,本文旨在为开发者和企业提供一条明晰的路径,以构建和维护在不断变化的市场环境中能够持续创新的应用程序。
45 1