京东统一发布平台J-one | 高效交付的秘诀就是Ta
2018-10-23阅读 9880
来这里找志同道合的小伙伴!
导读
自2016年7月份上线以来,京东统一发布平台J-one已经经历了京东4次大促洗礼,支撑全公司服务端业务系统90%以上的发布,从编译、配置、到发布,提供完善的发布功能及各种支撑上线的小工具。前段时间,J-one团队与公有云精诚合作,重磅推出了发布新功能-镜像部署,可大幅提升京东研发的发布效率,本文以本次升级作为切入点,介绍京东J-one的建设与未来。
京东的业务发展,一直呈现着业务扩展迅猛、体量飞速增长的态势,为了能够敏捷适应市场变化,将京东的业务能力通过研发力量快速地从开发推向给用户,2016年开始我们将原有的depoy 和 老J-one 整合成统一发布平台 J-one,从底层架构上进行全新设计,原来的架构是单机部署,架构不能水平扩展,现在可以根据负载情况实现自助扩缩容,研发上线排队的问题被彻底解决。
几次升级改造围绕的重要核心主要有以下三点:
1) 提高研发同学部署效率;
2) 提高部署成功率;
3) 加强部署平台能力,诸多排障小工具。
>>>> 找到阻挡研发人的痛点
京东原有的部署方式比较偏向于传统,从申请虚机、准备环境再到部署,在准备阶段占用了大部分时间,尤其是在业务扩张太快,资源却十分紧张的情况下,无形中拉长了全公司研发部署上线的战线。如今的J-one平台不仅提供公有云资源的申请入口,还在流程上简化了申请资源的过程。另外,容器能在部署时快速扩容,也能按需缩容,实现资源利用率最大化。
再结合业界最先进的理念和技术潮流,J-one提供镜像部署的功能。先构建出一个可以部署的镜像,然后再发布到生产环境中,在镜像部署中线下测试验证,保证测试环境和生产环境的环境一致性,同时日志和监控自动同步对接,省去研发不少麻烦。如果说原有传统部署平均时效是3个小时,那么现在通过镜像部署,可以分分钟之内搞定部署任务。
>>>> CI/CD全流程打通,打造统一平台
在应用类型多种多样,技术百花齐放的研发环境里,成百上千个应用往往涉及不同的编程语言、中间件、数据库等等,以及众多针对软件开发的方法论,例如:敏捷开发、精益开发等,这些给J-one平台带来了很多挑战,也对平台的基础设施建设要求越来越高。
从技术角度来说,更推崇研发人使用最顺手的开发语言、最高效的方式来开发最完美的产品,所以J-one首先实现了可定制化的容器编译,借助 k8s 弹性伸缩能力,可以根据需要弹出需要的编译镜像,编译完成后进行资源的回收,充分压榨物理机的资源。目前仅用了10 台支持了全公司每日上万次的编译需要,之前编译机约30台,已经支持了 c++(4.4.7) 、go(golang-1.9)、nodejs(node:8.9.4)等等,可以为编译提供多种场景,解决多样化的需求,保持编译环境的干净独立,使编译时长至少缩短到原来的一半。
现在开发的频率越来越快,平台突发性、集中上线的诉求在减少,无形中为J-one提供了一个打通部署/发布各环节的机会。如何才能使CI到CD更加无缝衔接,保障开发高效快速的流转到生产环节。关键还是要加强J-one的基础设施建设,没有基础设施就是无根之木。
在研发过程中所依赖的整个链条上的工具和平台要做到畅通可靠。专属的编译平台、专属的代码评审平台、专属的需求平台、专属的测试平台,包括监控平台须得相互连通、打破壁垒。研发最希望得到的是一个能够只关注于本职开发工作,通过代码提交来触发一系列的交付流程,达到持续集成,持续测试,持续部署的目的,让 idea变现周期性更短。 因此J-one平台正在有计划地向这方面靠拢,搭建所有环境里面能够涉及到的、能够以自动化方式解决的基础设施。
>>>> 更多的自动化工具,更快速地响应业务
在原有功能基础上,本次J-one升级添加了很多实用的小工具:
包依赖对比。源自于京东研发发展的历史背景,待上线包需要和上线包作对比,如果有出入,可以提前避免上线过程中会出现的问题;
包依赖管理。京东业务背后涉及的业务应用包之间依赖关系错综复杂,引入包依赖分析能够迅速的梳理出应用背后的包依赖关系,如果出现问题能够自动定位问题源,反馈给相应的运维人员;
包应用的依赖分析。应用分析通过第三方的服务接口,当业务应用出现问题时,通过依赖分析会自动排查系统中那个部分出现故障,定位上、中、下游,减少运维人员绕弯子查找;
系统/应用导出功能。满足各部门对本部门系统和应用的导出需求,将权限下放,导出相应部门的一级部门系统信息/应用信息;
重启更新配置。权限下放给系统负责人,有系统负责人控制是否需要开启该功能,做到系统层级开启该功能,根据需求和场景,随时开启/关闭。
研发自主操作Nginx文件。工作区,线上实例中增加Nginx文件的启停和编辑功能,无需运未介入即可启停NG,快速切断流量;
性能优化,部署速度提升5倍。提升发布、回滚速度。在5分钟左右并行发布300台机器;
……
对于J-one平台,各环节基础设施的完善有迹可循,但更重要的在于对平台稳定性、可靠性的建设,不懈追求服务功能的强大也不能忘记对“美”的追求,这种“美”来自于使用者的依赖和信赖,做到能真正服务用户、提升用户的好平台。0daybank
文章评论