云原生12因素摘录

Posted 秦的笔记

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生12因素摘录相关的知识,希望对你有一定的参考价值。

云原生应用的特征:云原生与“12 因素”

Heroku于 2012 年提出“12因素”(12-Factors)的云应用设计理念,(HeroKu 曾于2009 年推出公有云 PaaS),这些设计理念指导开发者利用云平台来开发易于维护、更具可靠性和扩展性的云原生应用。


1. 方法论和核心思想

“12 因素”适用于任何语言开发的后端应用,并提供了很好的方法论和核心思想。“12 因素”为构建 SaaS 应用提供了如下的方法论:


使用声明式格式来搭建自动化,从而使新的开发者花费最少的学习成本来加入这个项目;


和底层操作系统保持简洁的契约,在各个系统中提供最大的可移植性;


适合在现代的云平台上部署,避免对服务器和系统管理的额外需求;


最小化开发和生产之间的分歧,持续部署以实现最大灵活性;


可以在工具、架构和开发实践不发生重大变化的前提下实现扩展。


2. 编码、部署和运维原则

“12 因素”理论适用于以任意语言编写,并使用任意后端服务(数据库、消息队列、缓存等)的应用程序,它是关于如何编码、部署和运维的原则。这些是软件交付生命周期里最常见的场景,为多数开发者和 DevOps 整合团队所熟知(如下图)。


“12 因素”的内容


编码有关:基准代码、构建发布运行、开发/生产环境等价 ,与源码管理相关;


部署有关:显式依赖、配置、独立进程、后端服务、端口绑定,与微服务该如何部署以及如何处理依赖相关;


运维原则:并发、易处理、日志、管理进程,与如何简化微服务的运维相关。


3. 具体内容

12 因素的具体内容如下所示。


Codebase:基准代码。一份基准代码,多份部署。在统一的代码库中为代码配置、测试和脚本部署建立独立的项目和模块。


Dependencies:显式声明依赖关系。通过 Bundler、NPM 等工具隔离依赖性,不依赖于部署环境。


Config:在环境中存储配置。通过操作系统级的环境变量将配置信息或其他可能存在的不同信息(如开发环境、预生产环境、生产环境)应用到各个部署环境中。


Backing services:把后端服务当作附加资源。数据库、缓存等均被作为附加资源在不同环境中被同等调用,每个不同的后端服务都是一份资源。


Build, release, run:严格分离构建和运行。基准代码进行部署需要三个步骤,构建阶段,将代码仓库转化为可执行包的过程;发布阶段,将构建的结果和当前部署所需的配置相结合,并能够立刻在运行环境中投入使用;运行阶段,是指针对选定的发布版本在执行环境中启动一系列应用程序的进程。


Processes:进程。以一个或多个无状态进程运行应用。


Port binding:通过端口绑定提供服务。互联网应用可以通过端口绑定来提供服务并随时监听所有发送至该端口的请求。


Concurrency:并发。通过进程模型进行扩展。


Disposability:易处理、快速启动和优雅终止可最大化健壮性。


Dev/prod parity:开发环境与生产环境等价。保持开发、预发布、线上环境的相似性来实现持续交付与部署。


Logs:日志。把日志当作事件流,允许执行环境通过集中式服务来收集、聚合、检索和分析日志。


Admin processes:管理进程。后台管理任务当作一次性进程运行,如数据库迁移。




以上是关于云原生12因素摘录的主要内容,如果未能解决你的问题,请参考以下文章

云原生-应用开发的最佳实践原则,12-Factor

关于云原生

收购云原生鼻祖Pivotal的大厂,如何定义云原生?

云原生架构技术分享

1.Go语言高并发与微服务实战 --- 云原生架构

1.Go语言高并发与微服务实战 --- 云原生架构