本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008

开发、部署应用程序APP的【12要素原则】你顺便了解一下?-LMLPHP

☘️摘要

☘️介绍

在现代,软件通常作为服务交付:称为web应用程序或软件即服务。十二要素应用程序是一种构建软件即服务应用程序的方法,它:

  • 使用声明式格式的设置自动化,以最大限度地减少新开发人员加入项目的时间和成本;
  • 与底层操作系统有一个清晰的契约,在执行环境之间提供最大的可移植性; 适合部署在现代云平台上,避免了服务器和系统管理的需要;
  • 最小化开发和生产之间的分歧,实现持续部署以获得最大的敏捷性; 并且可以在不需要对工具、架构或开发实践进行重大更改的情况下进行扩展。
  • 十二因素方法可以应用于任何编程语言编写的应用程序,以及使用任何后台服务组合(数据库、队列、内存缓存等)的应用程序。

☘️背景

  • 本文档的贡献者直接参与了数百个应用程序的开发和部署,并通过我们在Heroku平台上的工作间接见证了数十万个应用程序的开发、运营和扩展。

  • 本文综合了我们对各种各样的软件即服务应用程序的经验和观察。它是应用开发理想实践的三角测量法,特别关注应用随着时间的推移而有机增长的动态,开发人员在应用代码库上的合作动态,以及避免软件侵蚀的成本。

  • 我们的动机是提高人们对现代应用程序开发中出现的一些系统性问题的认识,为讨论这些问题提供共享词汇表,并为这些问题提供一组广泛的概念性解决方案以及相关术语。该格式的灵感来自Martin Fowler的《企业应用程序架构模式与重构》一书。

☘️谁应该阅读这份文件?

  • 构建作为服务运行的应用程序的任何开发人员。
  • 部署或管理此类应用程序的运维工程师。

☘️十二要素原则

🌿I. 代码库 Codebase

One codebase tracked in revision control, many deploys

🌿II. 依赖关系 Dependencies

显式声明和隔离依赖项
Explicitly declare and isolate dependencies

🌿III. 配置 Config

Store config in the environment

🌿IV. 后台服务 Backing services

Treat backing services as attached resources

🌿V. 构建、发布、运行 Build, release, run

Strictly separate build and run stages

🌿VI.流程 Processes

Execute the app as one or more stateless processes

🌿VII. 端口绑定 Port binding

Export services via port binding

🌿VIII. 并发性 Concurrency

Scale out via the process model

🌿IX. 可处置性 Disposability

Maximize robustness with fast startup and graceful shutdown

🌿X. 开发/生产奇偶校验 Dev/prod parity

Keep development, staging, and production as similar as possible

🌿XI. 日志 Logs

Treat logs as event streams

🌿XII. 管理流程 Admin processes

Run admin/management tasks as one-off processes

☘️注释


05-08 12:32