专栏首页全栈码农画像现代云原生设计理念

现代云原生设计理念

前文传送门

现代设计理念

你会如何设计云原生应用程序?

需要遵循哪些原则、模式和最佳实践?

需要特别关注哪些底层/操作?

十二要素应用程序

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

尽管适用于任何基于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章“身份”中详细介绍。

Ref

  • https://tanzu.vmware.com/content/blog/beyond-the-twelve-factor-app
  • https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/definition

本文分享自微信公众号 - Dotnet Plus(nodotnet),作者:小码甲

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 云计算的概念与原理

    接下来这几篇将给大家介绍KVM的相关知识,讲到KVM之前我们先了解一下云计算,这也是自己在网上找的一些知识总结。给大家参考一下。 一、云计算的概念   1.1、...

    用户1195962
  • Java设计模式——代理模式实现及原理

    Tanyboye
  • 设计模式之代理,手动实现动态代理,揭秘原理实现

      所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能直接引用一个对象,而代理对象可以在客户端和目标对象之间...

    青石路
  • 云计算、云原生模式下 DevOps 的建设

    企业数字化转型过程和云的迭代发展是相互作用的。在2007年之前主要用物理机来作为我们当前应用的载体。而在2007年,KVM诞生,它能让底层操作系统和一些虚拟的网...

    云大学小编
  • 云原生数据库设计新思路

    本文作者为 PingCAP 联合创始人兼 CTO 黄东旭,将分享分布式数据库的发展趋势以及云原生数据库设计的新思路。

    深度学习与Python
  • 云原生数据库设计新思路

    在讲新的思路之前,先为过去没有关注过数据库技术的朋友们做一个简单的历史回顾,接下来会谈谈未来的数据库领域,在云原生数据库设计方面的新趋势和前沿思考。首先来看看一...

    PingCAP
  • 基于云原生的 KubeSecOps 流水线设计

    根据 gartner 的调查报告 https://www.gartner.com/smarterwithgartner/gartner-top-9-securi...

    我是阳明
  • 云原生下日志方案的架构设计

    原文链接:https://yq.aliyun.com/articles/717779

    业余草
  • Docker原理之 - OverlayFS设计与实现

    Docker 底层有三驾马车,Namespace、CGroup 和 UnionFS(联合文件系统),UnionFS 是 Docker 镜像的基础。前面我们介绍过...

    用户7686797

扫码关注云+社区

领取腾讯云代金券