原文链接:
http://click.aliyun.com/m/25324/
摘要: 在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解决了如何脱离城市公共交通之外解决最后一公里的问题。云计算也越来越成熟,上云解决了基础设施交付的问题,但是对于开发者而言还远远不够,云原生架构设计与应用成为了云计算的“最后一公里”问题。
11a1947441bafaab2812eb6b218beb2719b9063e
上图是NETFLAG公司定义的Cloud Native架构设计图。主要分为三个部分:Framework(左边),推荐使用微服务架构;Container Runtime(右边),建议容器化、资源生命周期自动化;Infrastructure Automation(中间),表达了基础设施即代码的思想,以及配管运维自动化。
7b999ce02bf9691f619daaa4c65af2ce43956c33
把刚才的图转换一下,可以总结为四个要点:DevOps、Continuous Delivery、Microservices、Containers。但对于开发者来讲,微服务和容器并不是必须的,而是与自己的模型、编程框架相关的,而DevOps和持续集成则是通用的模型。作为一个云计算厂商,我们要解决的是开发者如何在通用模型之下解决自己的问题。
766c507e0f1349cead19f7bbe964ef83dd9a0caf
上图大家都比较熟悉,讲述了云平台的SaaS、PaaS、IaaS层。最底层是IaaS层,提供了资源,PaaS层提供了能力,而SaaS层提供了服务。金字塔最底层是最扎实的,越往上越小,而DevOps是塔尖。所以,只有最底层基础设施的环境变得十分稳固、厚重的时候,才能保证最上层的DevOps有一个更高效的能力。
持续集成流程
a8abb179752684198f3445a8960709b756f51136
常见的DevOps流程分为代码开发,提交代码到代码仓库,通过web hook触发,由持续集成系统分别部署到测试环境、预发环境、正式环境。
540bfaa223daa75378eed68c38cfe84fe70e80d5
上图是基于容器的持续集成流程图。和前图的区别在于,在持续集成系统上层有一个镜像仓库,持续集成系统会把镜像推到镜像仓库,部署的时候由部署环境拉取镜像进行部署。
DevOps
DevOps不是让你成为全能忍者,而是消除“等待”与“浪费”。传统的瀑布流开发模型分为很多阶段:需求分析、设计、实现、验证、运维,这个过程中我们会等待基础架构的设计、应用程序部署、其他团队或者审核流程。而DevOps可以帮助消除不必要的流程、特性、人工、返工。
ed351d965be105640ba7dc8f609335f736b330ed
DevOps核心思想是分而治之,连续集成,快速交付。以前软件开发、交付的生命周期很长,以月或者半年为单位,现在将生命周期进行切分,变成以周或者天为单位。为什么以前没有做到?因为以前很难做到整个流程的自动化,比如基础设施自动化、交付自动化等,而现在云计算给了我们这个能力。Cloud Native、Microservices、Docker、Serverless是和DevOps结合最紧密的四个领域。这些领域展现了软件架构的变革,软件的架构变革带来了灵活性、稳定性、功能性也带来了技术成本。比如,Docker解决了如何快速交付的流程但是解决不了学习Docker的成本、运维的成本。DevOps解决的是如何将上述四个领域的技术成本屏蔽,通过自动化的方式把很多技术的问题变成按钮点击的问题。所以,DevOps的本身不是一个技术问题,但是技术的变革需要DevOps来填平带来的技术成本。DevOps实现是一个适配器,封装了本地开发与远程交付之间的实现。
0fb024e4e2c498c61bf993c7efeb13f20e441f36
DevOps里最核心的是持续集成服务器,它是交付流程的发动机。用的最多的持续集成服务器是Jenkins,每个阶段Jenkins都可以和很多系统集成,但是它也存在一些问题:架构陈旧,性能低下,单个Jenkins在并发1000个job或者250个slave的时候就会出现很严重的性能问题;安全漏洞很多,Master、插件都有很多漏洞;独立运维成本很高,Jenkins本身是Java的应用,但是还涉及到slave pool、镜像、配置插件等;缺乏完善的权限模型,使用权限模型的时候没法和namespace脱开;通用的DevOps模型需要更多的集成;插件太多导致缺乏最佳实践经验。
Alibaba Cloud CodePipeline
Alibaba Cloud CodePipeline是一个SaaS化的持续集成引擎。通过可视化的配置,简单快捷地实现持续集成与持续交付的流程,完全兼容Jenkins,并且在Jenkins上做了很多增强。
b5c4791c68f9d2ea97a8ced27c414cfd2c115511
上图是Alibaba Cloud CodePipeline的基础结构图。CodePipeline Service是任务调度系统,它会把任务分配到任务沙箱式运行时环境资源池,资源池是弹性伸缩的,开发者使用CodePipeline的时候无须担心自己的任务有多少、并发有多少。构建任务完成、代码下发好之后会发布一条部署命令,部署命令是由Deploy Service来完成的,它是通过反打方式实现的,好处是无须担心用户的网络环境。右侧是部署环境,支持ECS、HPC、VM、阿里云的Container Service。
SaaS化持续交付引擎
SaaS化的好处是:无需运维,开箱即用,使用云账号登陆即可拥有免费使用额度,独立部署支持与企业现有的LDAP集成,内置多种常用必备插件,无需二次安装;资源按需使用,动态生成,按使时长和资源付费,无需担心资源容量(公测不收费),资源动态使用动态销毁,无需担心代码、构建物外泄,资源无需运维,平台资源池统一维护,资源秒级生成、秒级销毁。
原文链接:
http://click.aliyun.com/m/25324/
分享到:
相关推荐
本资源是一个名为`mypy_boto3_codepipeline`的Python库,版本号为1.16.6.0。这个库是专为Python 3设计的,适用于各种操作系统(因为其后缀`-py3-none-any`表示它不依赖特定的Python实现或平台)。`whl`文件是一种...
这个特定的包名为“mypy_boto3_codepipeline”,版本号为1.17.43.0,它是一个Python 3兼容的构建(标记为“py3-none-any”),意味着它可以在任何不特定的平台(“none”)上运行,只要目标系统支持Python 3。...
6. **IaC(基础设施即代码)**:使用aws_cdk.aws_codepipeline,开发者能够将基础设施视为代码管理,这意味着可以使用同样的开发和测试最佳实践来管理云基础设施。 7. **安全性和合规性**:CDK允许开发者利用AWS的...
总的来说,`mypy_boto3_codepipeline` 是Python开发者在使用AWS CodePipeline服务时的一个强大工具,通过类型检查增强了代码的稳定性和可维护性,是Python开发中的最佳实践之一。如果你正在处理与AWS CodePipeline...
标题中的“PyPI 官网下载 | aws_cdk.aws_codepipeline-1.55.0-py3-none-any.whl”表明这是一个从Python Package Index(PyPI)官方站点下载的软件包,具体是aws_cdk模块下的aws_codepipeline组件,版本为1.55.0,...
**Python库aws_cdk.aws_codepipeline-1.42.0-py3-none-any.whl详解** `aws_cdk.aws_codepipeline-1.42.0-py3-none-any.whl` 是一个针对Python开发的库,用于在AWS Cloud Development Kit (CDK)中操作AWS ...
在本例中,我们关注的是`mypy_boto3_codepipeline`,一个针对AWS CodePipeline服务的类型检查增强版本。这个库是Python 3兼容的,版本号为1.14.47.0,它被封装在一个名为`mypy_boto3_codepipeline-1.14.47.0-py3-...
"Python库 | aws_cdk.aws_codepipeline-1.14.0-py3-none-any.whl" 是一个针对AWS Cloud Development Kit (CDK) 的Python库,特别关注于AWS CodePipeline服务。这个库使得开发者能够使用Python来构建、部署和管理AWS...
云上应用Docker化持续交付与微服务实践 这本书 非常不错,强力推荐
【腾讯专有云敏捷研发交付实践】 随着互联网+时代的到来,传统企业的IT架构正面临着前所未有的挑战。僵化的IT架构无法满足快速变化的市场需求,导致IT资源分配不合理、新业务上线速度缓慢,甚至存在大量的资源浪费...
深信服_应用交付AD_多链路上网负载均衡解决方案.pdf
3. 厂商实践:云原生软件供应链需要厂商的实践和支持,以确保软件供应链的安全性和可靠性。 云原生软件供应链安全演进架构的主要技术组件包括: 1. 镜像安全:镜像安全是云原生软件供应链安全的核心组件之一。镜像...
深信服_应用交付AD_双活数据中心应用交付解决方案.pdf
《PyPI上的aws-cdk.aws-codepipeline-1.42.1:构建AWS代码管道的Python库》 PyPI(Python Package Index)是Python开发者获取和分享软件包的主要平台,它为全球Python社区提供了丰富的开源资源。在PyPI上,我们可以...
云原生软件供应链安全演进技术创新,变革未来云原生软件供应链安全演进技术创新,变革未来云原生软件供应链社区发展厂商实践阿里云演进软件供应链软件开发编译测试分发部署驱动流水线将编写的代码最终发布到生产环境...
【Terraform与AWS CodePipeline】\n\nTerraform是一种强大的基础设施即代码(IAC)工具,由HashiCorp公司开发,它允许用户通过声明式配置文件来管理和部署云资源。AWS CodePipeline则是亚马逊Web Services(AWS)提供的...
公有云交付项目是现代信息技术领域中的一个重要环节,尤其是对于华为这样的大型科技公司来说,其涉及到的技术复杂性和市场策略具有深远影响。公有云项目的特点在于提供大规模、高可用性、可扩展的计算资源和服务,以...
深信服_应用交付AD_网站HTTPS加密应用交付解决方案.pdf
深信服_应用交付AD_WEB访问优化应用交付解决方案.pdf