什么是云原生应用(Cloud Native Application)?云原生应用不只是将应用打包成Docker镜像,然后部署到到Kubernetes容器云上运行。
作为云计算领导者,Heroku整理了著名的云原生12原则(The Twelve-Factor App)。
之后,同样作为云计算领导者,Pivotal (已被VMWare收购)重新整理了Beyond the 12 factor App。
本文对照Beyond the 12 factor App 来浅谈一下我对云原生应用的个人主观理解,以及如何更好地构建云原生应用。
Heroku版本:一份基准代码,多份部署
理解:
代码要进行版本管理;
最好的版本管理工具是Git;
一份基准代码可以是一个代码仓库(code repository),也可以一组代码仓库(code repository group);
工具:Git代码托管工具,比如GitLab、GitHub等。
Heroku版本:无
理解:
工具:API测试工具(Postman,SwaggerUI等)、API性能测试工具(JMeter等)、API文档管理(Yapi等)。
Heroku版本:显式声明依赖关系
理解:
工具:依赖管理工具,比如Maven、Gradle、npm;制品仓库,比如Nexus、Harbor。
Heroku版本:严格分离构建和运行
理解:
工具:CI Server:Jenkins、GitLab-CI、Drone等;自动化部署:Ansible等;
Heroku版本:在环境中存储配置
理解:
代码和配置分离;
在不同环境使用不同的配置;
妥善保管凭证信息,不允许将凭证信息保存到代码中;
使用服务配置中心来管理配置。
工具:服务配置中心,比如Etcd、Nacos、Appolo等;
Heroku版本:把日志当作事件流
理解:
工具:ELK或EFK。
Heroku版本:快速启动和优雅终止可最大化健壮性
理解:
工具:容器技术,比如Spring Boot自带了Web容器,Docker容器等。
Heroku版本:把后端服务当作附加资源
理解:
Heroku版本:尽可能的保持开发,预发布,线上环境相同
理解:
工具:虚拟化管理平台,比如VMSphere;基础架构管理工具,比如Terraform。
Heroku版本:后台管理任务当作一次性进程运行
理解:
工具:任务调度工具,比如xxl-jobs,Spring Quartz。
Heroku版本:通过端口绑定提供服务
理解:
工具:微服务的服务注册中心、Kubernetes的服务路由。
Heroku版本:以一个或多个无状态进程运行应用
理解:
Heroku版本:通过进程模型进行扩展。
理解:
Heroku版本:无
理解:
工具:监控,比如Prometheus、Grafana;微服务框架提供的服务熔断、限流和链路跟踪工具。
Heroku版本:无
理解:
工具:OAuth2,OpenID,SSO(单点登录);Java生态中的Spring Security、Shiro。
参见:
本文结合云原生12原则和云原生15原则,浅谈了对构建云原生应用的理解,包括对应的工具,以供参考。
本文地址:https://blog.csdn.net/nklinsirui/article/details/107358079
如对本文有疑问, 点击进行留言回复!!
星际无限CTO张超:IPFS分布式存储领域仍是蓝海,中链云将开启行业新思路!
厉害!俩月吃透阿里P8架构师推荐608页kafka源码,成功入职蚂蚁
性能 1.84 倍于 Ceph!网易数帆开源分布式存储系统 Curve
荐 面试半年,上个月成功拿到阿里P7offer,全靠我啃烂了这份2020最新面试题!
网友评论