摘要:这么思考问题的原因也很简单,我们笃信工程师文化,靠技术而不是管理解决问题,正如陈皓同学所言如果你是一个技术公司,你就会更多的相信技术而不是管理。
郑昀 创建于2017/3/8 最后更新于2017/3/10
关键词:研发协作,Docker,环境变量,开发联调,环境维护,虚拟机,中间件,配置与代码分离,git,jenkins
开发联调,测试,预发,生产,稍微上规模的互联网技术团队,每一次发布都需要经历这四个阶段。每一个阶段都对应于一个环境。所以我们会面对:
开发联调环境,测试环境,预发环境,生产环境。
产品线若干条。并发多个版本。工程无数,有Java,有PHP,有中间件。
说句狠话:没有趁手的利器,生产效率打完对折再打对折,勿谓言之不预也。
云纵有 CloudEngine,如我的《私有云的难处—为什么需要CloudEngine?》和《#研发解决方案#研发协作平台CloudEngine》文章所述,我以为能非常流畅地打通这四个环境,即使生产环境是混合云,即使应用可能发布在Docker容器里也可能发布在虚拟机里。
陈皓同学在《从Gitlab误删除数据库想到的》中说道:
一个公司的运维能力的强弱和你上线上环境敲命令是有关的,你越是喜欢上线敲命令,你的运维能力就越弱,越是通过自动化来处理问题,你的运维能力就越强。
而我希望的是:
环境维护,应用部署,只是勾勾点点,没有心理负担,dont make me think。 一个代码分支,对应的一个包(或镜像,对应于
Docker 的
Image),可以流经开发联调环境、测试环境,直接上预发环境,上生产环境,上云端,一路穿行没有障碍,全程无需手工干预,无需手工改配置文件重新打包。
这么思考问题的原因也很简单,我们笃信工程师文化,靠技术而不是管理解决问题,正如陈皓同学所言:
如果你是一个技术公司,你就会更多的相信技术而不是管理。相信技术会用技术来解决问题。相信管理,那就只会由制度、流程和价值观来解决问题。
那么怎么办到呢?
先来一个管中窥豹:
图0 管中窥豹,CE里是怎么申请服务器资源的
再来品尝一下关键点。
我之前说过:
要做到真正的大环境一致,必须将配置完全与代码分离,这里的配置不仅仅是服务之间的 IP
地址/内部域名/自动发现,还包括不同环境下不同应用的配置参数等。 首先我们把与环境相关的参数都存储在持久化配置中心里,比如 redis/zk
的访问域名,比如第三方合作伙伴的接口IP地址等。 其次,每个应用也都有自己的配置模板,不同环境部署的应用默认继承配置模板,我们可以通过
CloudEngine 对配置做一些微调,也就是下面要讲到的“临时属性信息”了。
CloudEngine 和 SimpleWay 会把环境标识(如 dev/dev-stable/test/test-stable/product 等)和需求工单号,以环境变量的方式打入“服务器”(即容器或虚拟机)里。
工程通过环境变量确认自己在哪一个环境里,对应哪一个需求工单,从而从持久化配置中心读取到当前环境和当前需求对应的属性信息。
所谓属性信息有三类:
1)环境属性信息:
环境的配置信息在环境层级设置,对应于“环境管理”菜单。比如开发稳定环境下的环境变量,我可以通过如下界面统一配置:
(图1 环境属性信息)
2)应用属性信息:
应用的配置信息在应用层级设置,对应于“应用管理”菜单。比如janus工程(Java)的应用配置,我可以通过如下界面来配置:
(图2 应用属性信息)
3)临时属性信息:
应用实例的配置信息在服务器层级设置,对应于“服务器管理”菜单。也就是这次我申请机器资源时,可以通过如下界面设置好临时属性信息,只有这个应用实例能访问到:
(图3 临时属性信息)
以前没有 CloudEngine 的时候,我们会维护三套测试环境:常规分支测试环境,紧急分支测试环境,特殊分支测试环境。分别对应于上线的班车模式(每周固定发车),警车模式(bugfix),专车模式(版本很大,开发和测试周期较长)。
维护三套测试环境,真心累。
现在只需要维护一套测试环境。
那么问题来了,多个需求工单,怎么在一套环境里并行测试?
秘诀就是,在环境里再建一个稳定环境(Stable)。
稳定环境里的应用,只会部署 Release 版本。
根据需求工单申请的新服务器资源,可以访问稳定环境里的业务中心,至少能保证相关业务能正常运行,不会说突然功能不能用了,突然服务宕机了。
如果开发联调环境和测试环境里的应用需要接受外网的请求,那么在 CloudEngine 里也不需要反复申请外网域名。统一使用 router.yourcompany.com 域名接受外网请求,然后通过 nginx 转发请求到相应的内网应用。
图4 是否需要接受外网请求
在相应的环境里,申请服务器资源时,你不需要键入 git 的代码分支,你输入应用名称,选好应用之后,系统会自动列出相应的分支,智能吧:
(图5 分支自动展现)
这充分体现了我们的哲学:dont make me think。
五,小结我们技术团队可以标准化输出的成体系的通用技术能力有:
1)
基于虚拟机集群和容器集群的研发协作平台:
申请服务器资源(虚拟机或容器),自动化构建,自动化部署,可自动发布到我们自己的公司机房、阿里云、蚂蚁金融云和IDC机房,支持版本回滚;
2)
电商全套中间件解决方案:
定时任务管理与调度平台,
异步消息可靠推送系统,
分布式并行计算调度和管理系统,
一站式智能监控报警平台,
分布式跟踪系统,
分布式缓存管理系统,
数据库自动化运维平台,
3)
大数据全套解决方案:
自助式报表平台,
即席查询系统,
数据库变更订阅中心,
实时数据大屏发布平台,
大数据计算任务发布管理平台,
4)
运维基础设施:
运维自动化平台,
云平台基础(虚拟机集群和容器集群),
大数据分析栈架构。
此体系绝非一朝一夕所能搭建,这是秉承着平凡人做非凡事的理念,一群信仰技术的工程师边开飞机边换引擎,花了几年岁月建造的森严有序的技术体系。
-EOF-
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/26837.html
摘要:这么思考问题的原因也很简单,我们笃信工程师文化,靠技术而不是管理解决问题,正如陈皓同学所言如果你是一个技术公司,你就会更多的相信技术而不是管理。 郑昀 创建于2017/3/8 最后更新于2017/3/10 关键词:研发协作,Docker,环境变量,开发联调,环境维护,虚拟机,中间件,配置与代码分离,git,jenkins 开发联调,测试,预发,生产,稍微上规模的互联网技术团队,每一次...
摘要:小编一哥们和我吐槽自家的烦恼原本一个有钱有闲的证券行业经理一年前被老板派去支持创新业务探索因为新型业务在不断加速铺开当前的单体式应用复杂度越来越高业务上线过程繁琐流程冗长资源分配耗时较多更新频率越来越低人员也越来越显得捉襟见肘这哥们于是开始 小编一哥们和我吐槽自家的烦恼原本一个有钱有闲的证券行业IT经理一年前被老板派去支持创新业务探索因为新型业务在不断加速铺开当前的单体式应用复杂度越来...
摘要:以推出轻舟微服务平台的网易云为代表,云计算公司正在微服务领域发力,促进企业数字化创新。以网易云轻舟微服务平台为例,该平台已经在物流工业和金融等领域得到了深度应用。 所谓数字化转型升级,就是以数字技术优化传统资源,企业需要谨慎地选择合适的技术逐步完成自己的数字化战略。以推出轻舟微服务平台的网易云为代表,云计算公司正在微服务领域发力,促进企业数字化创新。那么,微服务对数字化转型意味着什么?...
摘要:近日,网易云轻舟微服务团队接受了的采访,分享了网易云在云原生领域尤其是方面的实践经验。影响根据网易云团队的数据,使研发效率提高了以上,部署效率提高了。无论是否使用网易云产品,网易云都鼓励其他公司尝试。 近日,网易云轻舟微服务团队接受了CNCF的采访,分享了网易云在云原生领域尤其是Kubernetes方面的实践经验。以下为案例全文:showImg(https://segmentfault...
摘要:然而,敏锐的已经意识到,德邦快递率先引入的微服务架构,正在成为企业数字化转型升级战略成功的基石,成为企业引领行业创新的秘密武器。 2018年双11,中国网民释放出来超过2000亿元的购买力,给快递公司带来了新的一轮考验。刚刚从大件快递切入快递市场的德邦快递,却无惊无险地完成了客户的托付。信任德邦快递的店主和买家并不知道,在这战绩背后,德邦快递投入了每年5亿元的数字化建设成本,并采用了先...
阅读 5622·2021-11-24 10:25
阅读 2615·2021-11-16 11:44
阅读 3817·2021-10-11 11:09
阅读 3141·2021-09-02 15:41
阅读 3236·2019-08-30 14:14
阅读 2252·2019-08-29 14:10
阅读 2323·2019-08-29 11:03
阅读 1103·2019-08-26 13:47