云应用分析-12因素应用

云应用分析-12因素应用

 

 

1.基准代码

每个代码仓库(repo)都生成docker image保存到镜像仓库中,并使用唯一的ID管理,在Jenkins中使用编译时的ID。

2.依赖

显式的声明代码中的依赖,使用软件包管理工具声明,比如Go中的Glide。

3.配置

将配置与代码分离,应用部署到Kubernetes中可以使用容器的环境变量或ConfigMap挂载到容器中。

4.后端服务

把后端服务当作附加资源,实质上是计算存储分离和降低服务耦合,分解单体应用。

5.构建、发布、运行

严格分离构建和运行,每次修改代码生成新的镜像,重新发布,不能直接修改运行时的代码和配置。

6.进程

应用程序进程应该是无状态的,这意味着再次重启后还可以计算出原先的状态。

7.端口绑定

在Kubernetes中每个Pod都有独立的IP,每个运行在Pod中的应用不必关心端口是否重复,只需在service中指定端口,集群内的service通过配置互相发现。

8.并发

每个容器都是一个进程,通过增加容器的副本数实现并发。

9.易处理

快速启动和优雅终止可最大化健壮性,Kuberentes优秀的Pod生存周期控制

10.开发环境与线上环境等价

在Kubernetes中可以创建多个namespace,使用相同的镜像可以很方便的复制一套环境出来,镜像的使用可以很方便的部署一个后端服务。

11.日志

把日志当作事件流,使用stdout输出并收集汇聚起来,例如到ES中统一查看。

12.管理进程

后台管理任务当作一次性进程运行,kubectl exec进入容器内部操作。

后扩展三个因素

API优先

  • 服务间的合约
  • 团队协作的规约
  • 文档化、规范化
  • RESTful或RPC

监控

  • 实时监控远程应用
  • 应用性能监控(APM)
  • 应用健康监控
  • 系统日志
  • 不建议在线Debug

认证授权

  • 不要等最后才去考虑应用的安全性
  • 详细设计、明确声明、文档化
  • Bearer token、OAuth、OIDC认证
  • 操作审计

容器生态

读书笔记

微服务应该关注的问题

1,

发表评论