构建应用服务的十二条准则

简介: 构建应用服务的十二条准则

构建一个稳健易扩展的应用服务一直是我们不断追求的事情。早在九年前,《The Twelve-Factor APP》一文便从 12 个方面进行了软件开发准则的相关总结,即使时光飞逝,软件开发领域发生了翻天覆地的变化,但此文仍具有很高的参考价值,本文将会进行简单的重温。


———————————————————————————


1.  Codebase


基准代码应该与应用项目之间保持一一对应的关系。

同一个应用,即使针对不同的环境需要分别部署,也应该来源于同一份基准代码。对于多个应用如果存在需要共享的代码,则应该将其拆分为独立的类库,然后使用依赖管理策略去加载它们。



2.  Dependencies


显示声明依赖关系。应用必须有一个依赖清单,确切地声明所有依赖项。需要注意的是不要隐式依赖某些系统工具,诸如 curl 之类。



3.  Config


代码和配置严格分离。


不同的环境(如开发环境、预发布环境、生成环境等)通常会有不同的配置(如数据库、缓存系统、第三方服务等等)。有些应用使用硬编码的方式将这些配置项保存于代码的常量中,这种做法是 12-Factor 明确反对的。


判断一个应用是否正确地将配置排除在代码之外,一个简单的方法是看该应用的基准代码是否可以立即开源,而不用担心会暴露任何敏感信息。


一种解决方法是使用配置文件,但不把它们纳入版本控制系统。12-Factor 更推荐的是使用环境变量的方式。



4.  Backing services


我们的应用程序常常会依赖于其它一些后端服务,如数据库、消息队列、缓存系统等。不论这些服务是在本地还是第三方提供(如云平台),12-Factor 都只是把这些后端服务当做是附加的资源。

这些资源和它们附属的部署保持松耦合,部署可以按需加载或卸载资源,而不需要修改代码。



5.  Build, release, run


严格区分构建、发布、运行三个步骤。比如直接修改运行状态的代码是非常不可取的做法。



6.  Processes


应用的进程必须无状态且无共享,需要持久化的数据应该存储在诸如数据库之中。


粘性 session(用户 session 缓存至应用进程的内存中)是 12-Factor 极力反对的,你应该将 session 数据保存在诸如 memcached 或 redis 这样带有过期时间的缓存中。



7.  Port binding


通过端口绑定来提供服务。



8.  Concurrency


并发扩展。

12-Factor 建议开发人员根据不同的进程类型去设计应用架构,例如,处理 http 请求的交给 web 进程,常驻后台工作的交给 worker 进程。

应用程序必须可以跨越多台物理机具有良好的水平扩展能力。



9.  Disposability


快速启动、优雅终止。



10.  Dev/prod parity


保持环境的一致性。



11.  Logs


应用本身并不考虑存储自己的输出流,所有日志应该通过标准输出到统一的日志系统。



12.  Admin processes


管理操作不要在暗地里进行,有迹可循很重要。


目录
相关文章
错误:依赖检测失败: mysql-community-libs(x86-64) >= 5.7.9 被 (已安裝) mysql-community-li
错误:依赖检测失败: mysql-community-libs(x86-64) >= 5.7.9 被 (已安裝) mysql-community-li
1171 0
|
Go 计算机视觉
龙芯go之路(二)-安装opencv-go
我们在龙心派上安装go版本的opencv
649 0
|
C#
[原译]一步步教你制作WPF圆形玻璃按钮
原文:[原译]一步步教你制作WPF圆形玻璃按钮 图1   1.介绍 从我开始使用vista的时候,我就非常喜欢它的圆形玻璃按钮。WPF最好的一个方面就是允许自定义任何控件的样式。用了一段时间的Microsoft Expression Blend后。
1144 0
|
2天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
4天前
|
云安全 数据采集 人工智能
古茗联名引爆全网,阿里云三层防护助力对抗黑产
阿里云三层校验+风险识别,为古茗每一杯奶茶保驾护航!
古茗联名引爆全网,阿里云三层防护助力对抗黑产
|
4天前
|
存储 机器学习/深度学习 人工智能
大模型微调技术:LoRA原理与实践
本文深入解析大语言模型微调中的关键技术——低秩自适应(LoRA)。通过分析全参数微调的计算瓶颈,详细阐述LoRA的数学原理、实现机制和优势特点。文章包含完整的PyTorch实现代码、性能对比实验以及实际应用场景,为开发者提供高效微调大模型的实践指南。
534 2
kde
|
4天前
|
人工智能 关系型数据库 PostgreSQL
n8n Docker 部署手册
n8n是一款开源工作流自动化平台,支持低代码与可编程模式,集成400+服务节点,原生支持AI与API连接,可自托管部署,助力团队构建安全高效的自动化流程。
kde
362 3
|
2天前
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
754 4
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件