阿里云
发表主题 回复主题
  • 911阅读
  • 0回复

[云效产品]浅谈云效技术架构中的Docker实践

级别: 论坛版主
发帖
98
云币
370
— 本帖被 云效平台 执行加亮操作(2017-03-14) —
引言:“一位架构师曾说过:脱离业务的技术实践与架构就是耍流氓“,云效的技术架构发展也是基于业务的发展需求,云效是源于阿里巴巴B2B内部的一个研发测试平台宙斯盾,宙斯盾的业务支持覆盖了阿里60%的事业部。


在2012年之前,宙斯盾持续交付时,也是每周发布一次,将N个需求集成打包,一旦遇到问题,所有的流程全部回滚。2012年之后,宙斯盾开始向敏捷迭代研发模式转型,构建系统模块,建立研发流程闭环。201510月,宙斯盾(云效)对外开放提供服务,业务迅速发展的同时也带给技术新的挑战,其中最棘手的就是下面三个问题:
1. 云效应用多并且基础软件不一,如果快速部署到一家新的公司,相当于给整个网站系统做一个容灾备库,成本可想而知;
2. 客户需要系统很方便很快的进行水平扩展,包括系统压力,代码规模、集成构建节点等,尽量减少人工介入;
3.云效给客户承诺对内对外一套代码,同时支撑内部服务和外部服务,对技术是个不小的挑战。

云效为什么选择Docker部署?


在与首家互联网保险公司众安合作的时候,云效使用的还是最原始的部署方式,众安提供了60多台服务器,让云效整体部署起来,只是部署这一件事大概花了15个人日。在这样的实践中,云效开始考虑Docker化解决方案。
Docker化要求对每一个应用都做好Docker File,基础软件装Docker,然后其它所有软件,包含了部门技术栈所需要的一些基础软件,可以全部封在镜像当中。Docker会有一个分层,相当于文件分层,做镜像的时候,基于底层可以一层一层往上做,这样接下来的客户合作,云效就可以用Docker镜像去做部署了。
Docker技术实践——镜像制作




云效会基于官方的一些Docker镜像,去做己需要的镜像。首先是云效基础的操作系统镜像,接着是一些中间件镜像,这些镜像会单独存到另外的镜像仓库里去,作为独立部署的时候启动容器需要的,比如说有一些基础的代理配置,调度服务等等;然后还有一些中台微服务镜像和前台服务镜像。

另外,云效还做了一些编译镜像,以镜像的方式提供编译环境,如果现在去安装一台服务器,基本上只要装Docker的基础软件就可以了。这样任意一台装好Docker的机器,都可以作为编译环境,就可以加强水平扩展。
Docker技术实践——编排与部署




云效在与五矿电商合作的时候,就全部采用Docker部署,当时独立部署花了5个人日,虽然较之前部署时间缩短很多,但这中间还是存在一些问题。
比如一台服务器的端口是有限的,所有容器的启动,还是让五矿提供了很多服务器,在服务器启动部署应用的时候,会采用Rancher去做镜像配置和应用编排。对一个镜像的编排,一个系统的部署,都可以通过配置文件去完成配置,然后通过label去分发,最后需要让我们的前台服务手工配置DNS,这个操作流程也是很大的成本浪费。
Docker技术实践——Web服务的注册与发现




基于此,云效想如何能够做到web服务的注册与发现。也就是说不管你是前台应用,中台应用还是后台应用,只要提取出来之后,会自动配置到DNS里面去,客户可以直接绑定DNS进行访问。后来通过应用配置、应用编排、端口自动做编配、自动刷新配置等来达到web服务注册和发现的目的。主要实现以下三个功能:
1.按资源分发Web服务容器,最小的服务器个数,最大的资源使用;
2.服务自动注册,无需人工配置,一键部署开箱即用;
3.服务器资源监控,添加服务器即可扩容,水平扩展一切。
现在部署一家新的公司系统,将整套云效系统全部部署起来,大概只需要0.5个人日。

持续集成持续交付的实践之路并不容易,过程中会遇到各种各样的问题,借用汪国真诗人一句名言:“既然选择远方,便只顾风雨兼程”,云效也是如此,既然选择做持续集成持续交付,便只顾帮助企业解决问题,实现持续集成持续交付。


温馨提示:12月29日19:00云效《分层自动化之如何做好性能测试》直播分享即将开启,敬请收看!

直播详情

直播时间:12月29日19:00
直播嘉宾:阿里巴巴B2B事业群技术专家许晓
直播主题:《分层自动化之如何做好性能测试》
直播提纲:
1.性能测试的背景和目的;
2性能测试常见指标有哪些?它们之间存在怎样的换算关系?
3.性能测试有哪些测试方法?如何掌握正确的测试策略?
4.如何利用工具做好性能测试?

报名方式
(识别图中二维码,抢先报名)



[ 此帖被云效平台在2016-12-28 10:50重新编辑 ]
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
验证问题: 60 + 31 = ?
上一个 下一个