美文网首页
The 12-Factor App factor 1 - 6

The 12-Factor App factor 1 - 6

作者: 李冬的读书笔记 | 来源:发表于2018-08-23 23:07 被阅读28次

    12 Factor App 是一套开发SaaS软件的方法论, 由12条开发准则组成。格式搞得类似敏捷宣言,不过更加具体。我是在 Architecting Modern Java EE Application 一书中看到的,但觉得的确很有必要单独介绍一下。本文先简要介绍这12条原则,以后再琢磨如何在Java的开发工具内实现这些原则。其中有些原则大家可能习以为常,有些则未必很容易实现。

    1. 基准代码(Codebase)
      One codebase tracked in revision control, many deploys.
      一份基准代码维护在版本管理工具中(如Git),基准代码可以产生多个不同环境的部署。多个App不应该共享代码,如果要共享需要把这部分代码抽为库,通过依赖管理来控制。这第一点比较好理解。

    2. 依赖(Dependencies)
      Explicitly declare and isolate dependencies.
      需要显式地申明并隔离依赖。现在主流语言都有自己的依赖管理工具,比如Java可以用Maven,Node.js用npm。和显式相反的是隐式依赖,比如依赖机器上全局安装的什么包和库,这会带来很大的隐患。隔离指的是不能让周围的环境中的包影响到程序,docker之类的容器提供了这种隔离。

    3. 配置(config)
      Store config in the environment.
      把配置放到环境中去。配置指的是可能随不同的部署而不同的那部分信息,包括指向的外部服务配置,用户名密码,ip地址等等。这部分必须和代码隔离开来。一个很简单的测试就是,如果现在把代码开源了,没有任何的秘密信息会被暴露。12 factor app推荐的做法是把这配置放在操作系统的环境变量中。这存在一些争议。

    4. 后端服务(backing services)
      Treat backing services as attached resources
      把后端服务当作附加资源。所谓后端服务是通过网络来访问的一些外部功能,比如数据存储,消息队列,邮件服务,缓存服务。12 factor app不用区分本地自己搭建的服务还是第三方提供的服务,它们是附加的意味着他们可以被替换掉而不用改变代码。

    5. 构建,发布,运行(build, release run)
      Strictly separate build and run stages
      严格区分构建和运行阶段。一旦构建好的代码,称为一次发布(release),这代码可以运行很多次,比如服务器重启的时候,而不需要重新构建。任何代码的改动,必须经过构建才能发布。

    6. 进程(Processes)
      Execute the app as one or more stateless processes
      应用作为一个或多个无状态的进程来运行。无状态这个对编程提出了要求。

    相关文章

      网友评论

          本文标题:The 12-Factor App factor 1 - 6

          本文链接:https://www.haomeiwen.com/subject/fxcmiftx.html