来这里找志同道合的小伙伴!
导读
自2016年7月份上线以来,京东统一发布平台J-one已经经历了京东4次大促洗礼,支撑全公司服务端业务系统90%以上的发布,从编译、配置、到发布,提供完善的发布功能及各种支撑上线的小工具。前段时间,J-one团队与公有云精诚合作,重磅推出了发布新功能-镜像部署,可大幅提升京东研发的发布效率,本文以本次升级作为切入点,介绍京东J-one的建设与未来。
京东的业务发展,一直呈现着业务扩展迅猛、体量飞速增长的态势,为了能够敏捷适应市场变化,将京东的业务能力通过研发力量快速地从开发推向给用户,2016年开始我们将原有的depoy 和 老J-one 整合成统一发布平台 J-one,从底层架构上进行全新设计,原来的架构是单机部署,架构不能水平扩展,现在可以根据负载情况实现自助扩缩容,研发上线排队的问题被彻底解决。
几次升级改造围绕的重要核心主要有以下三点:
1) 提高研发同学部署效率;
2) 提高部署成功率;
3) 加强部署平台能力,诸多排障小工具。
京东原有的部署方式比较偏向于传统,从申请虚机、准备环境再到部署,在准备阶段占用了大部分时间,尤其是在业务扩张太快,资源却十分紧张的情况下,无形中拉长了全公司研发部署上线的战线。如今的J-one平台不仅提供公有云资源的申请入口,还在流程上简化了申请资源的过程。另外,容器能在部署时快速扩容,也能按需缩容,实现资源利用率最大化。
再结合业界最先进的理念和技术潮流,J-one提供镜像部署的功能。先构建出一个可以部署的镜像,然后再发布到生产环境中,在镜像部署中线下测试验证,保证测试环境和生产环境的环境一致性,同时日志和监控自动同步对接,省去研发不少麻烦。如果说原有传统部署平均时效是3个小时,那么现在通过镜像部署,可以分分钟之内搞定部署任务。
在应用类型多种多样,技术百花齐放的研发环境里,成百上千个应用往往涉及不同的编程语言、中间件、数据库等等,以及众多针对软件开发的方法论,例如:敏捷开发、精益开发等,这些给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升级添加了很多实用的小工具:
性能优化,部署速度提升5倍。提升发布、回滚速度。在5分钟左右并行发布300台机器;
……
对于J-one平台,各环节基础设施的完善有迹可循,但更重要的在于对平台稳定性、可靠性的建设,不懈追求服务功能的强大也不能忘记对“美”的追求,这种“美”来自于使用者的依赖和信赖,做到能真正服务用户、提升用户的好平台。