打造云上代码交付链_CodePipeline实践分享

原文链接

摘要: 在2017在线技术峰会——首届阿里巴巴研发效能嘉年华上,来自阿里云飞天研发部的工程师莫源分享了《打造云上代码交付链,CodePipeline实践分享》。他在云计算和云平台、持续集成流程、DevOps的基础上,详细分享了Alibaba Cloud CodePipeline优于Jenkins的性能和实践。

在2017在线技术峰会——首届阿里巴巴研发效能嘉年华上,来自阿里云飞天研发部的工程师莫源分享了《打造云上代码交付链,CodePipeline实践分享》。他在云计算和云平台、持续集成流程、DevOps的基础上,详细分享了Alibaba Cloud CodePipeline优于Jenkins的性能和实践。

以下内容根据直播视频整理而成。

直播视频:https://yq.aliyun.com/edu/lesson/549

PDF下载:https://yq.aliyun.com/attachment/download/?id=1844

云计算和云平台

云计算领域和其他领域是非常相似的,当一个领域越来越成熟的时候,发展方向会朝着精细化发展。比如,ofo解决了如何脱离城市公共交通之外解决最后一公里的问题。云计算也越来越成熟,上云解决了基础设施交付的问题,但是对于开发者而言还远远不够,云原生架构设计与应用成为了云计算的“最后一公里”问题。

上图是NETFLAG公司定义的Cloud Native架构设计图。主要分为三个部分:Framework(左边),推荐使用微服务架构;Container Runtime(右边),建议容器化、资源生命周期自动化;Infrastructure Automation(中间),表达了基础设施即代码的思想,以及配管运维自动化。

把刚才的图转换一下,可以总结为四个要点:DevOps、Continuous Delivery、Microservices、Containers。但对于开发者来讲,微服务和容器并不是必须的,而是与自己的模型、编程框架相关的,而DevOps和持续集成则是通用的模型。作为一个云计算厂商,我们要解决的是开发者如何在通用模型之下解决自己的问题。

上图大家都比较熟悉,讲述了云平台的SaaS、PaaS、IaaS层。最底层是IaaS层,提供了资源,PaaS层提供了能力,而SaaS层提供了服务。金字塔最底层是最扎实的,越往上越小,而DevOps是塔尖。所以,只有最底层基础设施的环境变得十分稳固、厚重的时候,才能保证最上层的DevOps有一个更高效的能力。

持续集成流程

常见的DevOps流程分为代码开发,提交代码到代码仓库,通过web hook触发,由持续集成系统分别部署到测试环境、预发环境、正式环境。

上图是基于容器的持续集成流程图。和前图的区别在于,在持续集成系统上层有一个镜像仓库,持续集成系统会把镜像推到镜像仓库,部署的时候由部署环境拉取镜像进行部署。

DevOps

DevOps不是让你成为全能忍者,而是消除“等待”与“浪费”。传统的瀑布流开发模型分为很多阶段:需求分析、设计、实现、验证、运维,这个过程中我们会等待基础架构的设计、应用程序部署、其他团队或者审核流程。而DevOps可以帮助消除不必要的流程、特性、人工、返工。

DevOps核心思想是分而治之,连续集成,快速交付。以前软件开发、交付的生命周期很长,以月或者半年为单位,现在将生命周期进行切分,变成以周或者天为单位。为什么以前没有做到?因为以前很难做到整个流程的自动化,比如基础设施自动化、交付自动化等,而现在云计算给了我们这个能力。Cloud Native、Microservices、Docker、Serverless是和DevOps结合最紧密的四个领域。这些领域展现了软件架构的变革,软件的架构变革带来了灵活性、稳定性、功能性也带来了技术成本。比如,docker解决了如何快速交付的流程但是解决不了学习Docker的成本、运维的成本。DevOps解决的是如何将上述四个领域的技术成本屏蔽,通过自动化的方式把很多技术的问题变成按钮点击的问题。所以,DevOps的本身不是一个技术问题,但是技术的变革需要DevOps来填平带来的技术成本。DevOps实现是一个适配器,封装了本地开发与远程交付之间的实现。

DevOps里最核心的是持续集成服务器,它是交付流程的发动机。用的最多的持续集成服务器是Jenkins,每个阶段Jenkins都可以和很多系统集成,但是它也存在一些问题:架构陈旧,性能低下,单个Jenkins在并发1000个job或者250个slave的时候就会出现很严重的性能问题;安全漏洞很多,Master、插件都有很多漏洞;独立运维成本很高,Jenkins本身是Java的应用,但是还涉及到slave pool、镜像、配置插件等;缺乏完善的权限模型,使用权限模型的时候没法和namespace脱开;通用的DevOps模型需要更多的集成;插件太多导致缺乏最佳实践经验。

Alibaba Cloud CodePipeline

Alibaba Cloud CodePipeline是一个SaaS化的持续集成引擎。通过可视化的配置,简单快捷地实现持续集成与持续交付的流程,完全兼容Jenkins,并且在Jenkins上做了很多增强。

上图是Alibaba Cloud CodePipeline的基础结构图。CodePipeline Service是任务调度系统,它会把任务分配到任务沙箱式运行时环境资源池,资源池是弹性伸缩的,开发者使用CodePipeline的时候无须担心自己的任务有多少、并发有多少。构建任务完成、代码下发好之后会发布一条部署命令,部署命令是由Deploy Service来完成的,它是通过反打方式实现的,好处是无须担心用户的网络环境。右侧是部署环境,支持ECS、HPC、VM、阿里云的Container Service。

SaaS化持续交付引擎

SaaS化的好处是:无需运维,开箱即用,使用云账号登陆即可拥有免费使用额度,独立部署支持与企业现有的LDAP集成,内置多种常用必备插件,无需二次安装;资源按需使用,动态生成,按使时长和资源付费,无需担心资源容量(公测不收费),资源动态使用动态销毁,无需担心代码、构建物外泄,资源无需运维,平台资源池统一维护,资源秒级生成、秒级销毁。

全量兼容Jenkins插件

CodePipeline对Jenkins插件进行了安全加固,所有开放出来的插件都经过安全加固,加固后的插件不定期的反馈给社区。并且根据开发者需求不断开放Jenkins插件满足开发者的需求。开发者可以根据需求提交开放申请,内置的Best Practise会提供更多场景的插件组合的使用方案,开放的插件的能力会在阿里云的场景下有更多的集成。

阿里云产品生态无缝集成

集成OSS、容器Hub存储构建物,OSS提供构建物存储,Hub提供镜像存储,未来考虑支持(Nas等等)。支持多种部署环境,包括ECS支持标准应用部署、容器支持容器化部署、EGS、ESS、EWS等等。

多种部署方式支持

支持跨Region部署(经典、VPC),具备IDC、公有云、跨云混合部署的能力,VPC网络采用反向通道的方式,无需在安全组上打洞。支持多种部署方式,具备ECS、容器服务混合部署,支持不同部署环境跨Region部署,支持部分部署模型的无宕机发布。支持全量的部署环境,公测版本支持Java、Node.js的环境,预计短期开放PHPPythonGo、C++等语言。

内置最佳实践

向导方式内置语言的部署最佳实践,公测支持Java与node.js,支持用户自定义最佳实践(待开放)。社区、论坛提供最佳实践的文章与指南,提供基础功能的使用指南,提供标准流程的最佳实践指南,提供高级功能扩展使用实践。

原文链接

时间: 2024-07-29 01:21:15

打造云上代码交付链_CodePipeline实践分享的相关文章

空格App亿元A轮融资背后:云上多场景技术架构实践与经验

直播视频: (点击图片观看) 幻灯片下载地址:https://oss.aliyuncs.com/yqfiles/382bc642fc0b621a9368138a74d8fd36.pdf 3月16日云栖社区在线实时分享顺利结束,本次由空格APP技术合伙人刘博分享了空格利用阿里云服务在搜索.推荐和数据挖掘业务场景下的探索实践.本次视频直播的整理文章.视频整理完毕,如下内容. 阿里云在空格 图一 空格服务端整体架构 在空格初始创业阶段,人员十分缺乏,但依靠着阿里云,空格两周便实现APP上线.空格服务端

中小企业及创业团队云上监控方法

创业团队往往人少,强调效率,强调速度,所以一般会选择使用公有云来部署业务,基于云的监控是一个难点,本文讨论创业团队云上监控的方法. 要分享这个题目,是因为前几天我有个朋友,刚好就在一个创业团队,他们的业务初步上线,效果比较好,但是有几次业务出现问题,都是收到用户反馈,然后才去排查,从发现到处理完成,时间已经很长了.经过几次折腾,这时候才意识到监控的重要性. 为了快速解决问题,他们使用了商业监控方案,效果不错,用了一周就完成了系统及业务层面比较全面的监控,能做到业务有问题及时短信.邮件报警,然后快

基于开源打造智能云上自动运维

自动化能自动化的一切 然后介绍了使用Terraform和Packer开源工具完成云上自动运维的具体实现过程 云上自动化资源架构和变更实践 https://yq.aliyun.com/articles/218891?spm=5176.100239.blogcont159008.36.Vzs09S 如何用开源工具进行Multi-Cloud的自动化资源架构和变更? DevOps和基础设施自动化 据数据统计,在2015年DevOps的被采纳率是66%,而到了2016年就达到了74%,在这短短的一年间增加

云上拍客梨视频 基于阿里云的技术实践分享

摘要: 梨视频大部分的业务都选择了阿里云,其中一个主要原因是阿里云提供基于钉钉群构建的24贴身技术支持,刘隽表示,这种服务模式可以更充分.高效的对接需求,快速得到反馈,这也让梨视频的同学有信心去尝试一些新的方案. 在上海云栖大会视频专场中,梨视频CTO刘隽先生分享了梨视频拍客生产全流程及其背后的技术,同时作为业务使用方,向现场嘉宾阿里云产品的使用实践. 云上拍客梨视频 梨视频是全球第一资讯短视频内容生产和消费平台,拥有5万名全球核心拍客,遍布全球七大洲,覆盖525个国际主要城市和2000多个国内

一位云架构师用服务打动客户的故事之六(阿里云上的MSP最佳实践项目分享)

最近找了一个典型的云服务客户的案例对内进行分享,今天把核心内容脱敏后分享出来.希望能给目前在路上(做云服务MSP)的同行,有一些借鉴意义或者帮助. 该用户据全年跟进情况,目前该客户距正式启用我们公司云服务(运维服务)的日子已经有半年有余了,目前整体趋于稳定,故将目前用户进行深度复盘剖析,让各位伙伴更好的从该客户案例中提取一些有用的"武器"."售前技巧". 云产商:阿里云 企业背景-日企上来的终极三问~ > 为什么选择我们做云服务商?PS:此云服务并非指的是阿里

git 码云上关联仓库 克隆代码

把本地代码和远程相关联 初始化用户邮箱:  git config --global user.name 'Your Name' git condig --global user.email '[email protected]' 1,git clone '地址' 重名文件      ----克隆代码 2,git init 初始化仓库 3,生成公钥 $ ssh-keygen -t rsa -C "[email protected]" 一路回车 4,在码云上添加你的公钥 标题是随便写  公

在云上搭建大规模实时数据流处理系统

在大数据时代,数据规模变得越来越大.由于数据的增长速度和非结构化的特性,常用的软硬件工具已无法在用户可容忍的时间内对数据进行采集.管理 和处理.本文主要介绍如何在阿里云上使用Kafka和Storm搭建大规模消息分发和实时数据流处理系统,以及这个过程中主要遭遇的一些挑战.实践主要立 足建立一套汽车状态实时监控系统,可以在阿里云上立即进行部署. 一.实时大数据处理利器——Storm和Kafka 大数据时代,随着可获取数据的渠道增多,比如常见的电子商务.网络.传感器的数据流.太空数据等,数据规模也变得

如何保障云上数据安全?一文详解云原生全链路加密

点击下载<不一样的 双11 技术:阿里巴巴经济体云原生实践> 本文节选自<不一样的 双11 技术:阿里巴巴经济体云原生实践>一书,点击上方图片即可下载! 作者李鹏(壮怀)阿里云容器服务高级技术专家黄瑞瑞? 阿里云技术架构部资深技术专家 导读:对于云上客户而言,其云上数据被妥善的安全保护是其最重要的安全需求,也是云上综合安全能力最具象的体现.本文作者将从云安全体系出发,到云数据安全,再到云原生安全体系对全链路加密进行一次梳理,从而回答:在云原生时代,全链路加密需要做什么?如何做到?以

《代码阅读方法与实践之读书笔记之一》

阅读代码是程序员的基本技能,同时也是软件开发.维护.演进.审查和重用过程中不可或缺的组成部分.<代码阅读方法与实践之读书笔记之一>这本书围绕代码阅读,详细论述了相关的知识与技能.我希望通过仔细阅读并学习本书,可以快速地提高我的代码阅读的技能与技巧,进而从现有的优秀代码.算法.构架.设计中汲取营养,提高自身的开发与设计能力.此次读了此书的前四章,以下是我从中汲取到的宝贵养分: 从第一章<导论>一节中我体会到了我们要养成一个经常花时间阅读别人编写的高品质代码的习惯,因为阅读高品质的代码