提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:郑恭琳|2020-12-16 14:49:01.787|阅读 253 次
概述:更快的发布周期是微服务架构的主要优势之一。但是,如果没有良好的CI/CD流程,您将无法实现微服务所承诺的敏捷性。本文介绍了挑战并提出了解决此问题的一些方法。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
相关链接:
更快的发布周期是微服务架构的主要优势之一。但是,如果没有良好的CI/CD流程,您将无法实现微服务所承诺的敏捷性。本文介绍了挑战并提出了解决此问题的一些方法。
当我们谈论CI/CD时,实际上是在谈论几个相关过程:持续集成、持续交付和持续部署。
以下是微服务架构的健壮CI/CD流程的一些目标:
在传统的整体应用程序中,只有一个构建管道,其输出是应用程序可执行文件。所有开发工作都将馈入此管道。如果发现高优先级错误,则必须集成,测试和发布修补程序,这可能会延迟新功能的发布。您可以通过使用结构良好的模块并使用功能分支来最大程度地减少代码更改的影响来减轻这些问题。但是,随着应用程序变得越来越复杂,并添加了更多功能,整装件的发布过程往往变得更加脆弱,并可能会破裂。
遵循微服务理念,永远不会有一个漫长的发布培训,每个团队都必须排队。构建服务“A”的团队可以随时发布更新,而无需等待服务“B”中的更改被合并,测试和部署。
CI/CD整体图
为了达到较高的释放速度,您的释放管道必须自动化且高度可靠,以最大程度地降低风险。如果您每天一次或多次发布产品,则回归或服务中断必定很少发生。同时,如果确实部署了错误的更新,则必须以可靠的方式快速回滚或前滚到服务的先前版本。
缓解措施:建立统一的自动化管道来构建和部署服务,以使这些知识不会在每个团队中“隐藏”。
缓解措施:容器化每个服务的构建过程。这样,构建系统仅需要能够运行容器。
缓解措施:CI/CD流程自动化和可靠的程度越高,对中央机构的需求就越少。也就是说,您可能有不同的策略来发布主要功能更新与次要错误修复。权力下放并不意味着零治理。
缓解措施:使用部署技术(例如蓝绿色或Canary发布)进行不间断的更改。要中断API更改,请与以前的版本并排部署新版本。这样,可以对使用先前API的服务进行更新并针对新API进行测试。请参阅下面的更新服务。
在创建CI/CD工作流之前,您必须了解代码库的结构和管理方式。
monorepo方法一直受到欢迎,但两者都有优点和缺点。
代码共享
易于标准化代码和工具
重构代码更容易
可发现性——代码的单一视图
明确每个团队的所有权
潜在的合并冲突更少
有助于强制微服务解耦
共享代码的更改可能会影响多个微服务
合并冲突的可能性更大
工具必须扩展到大型代码库
访问控制
更复杂的部署过程更难共享代码
难以执行编码标准
依赖管理
扩散的代码库,可发现性差
缺乏共享基础架构
更新服务
Monorepo
多存储库
优势
挑战
有多种策略可以更新已经投入生产的服务。在这里,我们讨论三个常用选项:滚动更新、蓝绿色部署和canary发布。
滚动更新
在滚动更新中,您将部署服务的新实例,新实例立即开始接收请求。随着新实例的出现,以前的实例将被删除。
例如,在Kubernetes中,当您更新Deployment的Pod规范时,滚动更新是默认行为。部署控制器为更新的Pod创建一个新的ReplicaSet。然后,它会按比例缩放新的ReplicaSet,同时按比例缩小旧的ReplicaSet,以保持所需的副本数。在新的Pod就绪之前,它不会删除旧的Pod。Kubernetes保留更新的历史记录,因此您可以根据需要回滚更新。
例如,默认情况下,Azure Service Fabric使用滚动更新策略。此策略最适合在不更改现有API的情况下部署具有新功能的服务版本。Service Fabric通过将应用程序类型更新为节点的子集或更新域来启动升级部署。然后,它将前滚到下一个更新域,直到所有域都升级。如果升级域更新失败,则应用程序类型将在所有域中回滚到以前的版本。请注意,具有多个服务的应用程序类型(并且如果所有服务都作为一个升级部署的一部分进行更新)则很容易发生故障。如果一项服务更新失败,则整个应用程序将回滚到以前的版本,而其他服务则不会更新。
滚动更新的一个挑战是,在更新过程中,新旧版本的混合正在运行并接收流量。在此期间,任何请求都可以路由到两个版本中的任何一个。
为了打破API更改,一个好的做法是并排支持两个版本,直到更新了先前版本的所有客户端为止。请参阅API版本控制。
蓝绿色部署
在蓝绿色部署中,您将新版本与先前版本一起部署。验证新版本后,您可以一次将所有流量从以前的版本切换到新版本。切换之后,您可以监视应用程序是否存在任何问题。如果出现问题,您可以交换回旧版本。假设没有问题,则可以删除旧版本。
对于更传统的单片或N层应用程序,蓝绿色部署通常意味着预配两个相同的环境。您可以将新版本部署到暂存环境,然后将客户端流量重定向到暂存环境,例如,通过交换VIP地址。在微服务体系结构中,更新发生在微服务级别,因此您通常将更新部署到同一环境中,并使用服务发现机制进行交换。
例如,在Kubernetes中,您无需配置单独的集群即可进行蓝绿色部署。相反,您可以利用选择器。使用新的pod规范和一组不同的标签创建新的Deployment资源。创建此部署,而不删除先前的部署或修改指向它的服务。新的Pod运行之后,您可以更新服务的选择器以匹配新的部署。
蓝绿色部署的一个缺点是,在更新期间,您正在运行该服务的Pod(当前和下一个)两倍。如果Pod需要大量CPU或内存资源,则可能需要临时扩展群集以处理资源消耗。
Canary发布
在Canary版本中,您向少数客户端推出了更新版本。然后,在将新服务推广到所有客户端之前,您将监视新服务的行为。这样一来,您就可以以受控方式进行缓慢的部署,观察实际数据并在所有客户都受到影响之前发现问题。
Canary版本比蓝绿色更新或滚动更新更复杂,因为您必须将请求动态路由到服务的不同版本。
例如,在Kubernetes中,您可以将服务配置为跨越两个副本集(每个版本一个)并手动调整副本计数。但是,由于Kubernetes跨Pod负载均衡的方式,这种方法相当粗糙。例如,如果总共有10个副本,则只能以10%的增量转移流量。如果使用服务网格,则可以使用服务网格路由规则来实现更复杂的Canary发布策略。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
人工智能和机器学习赋能 API 和 Web 服务测试
Parasoft Virtualize用于创建、部署和管理模拟的开发与测试环境的虚拟解决方案
Parasoft SOAtest with Load Test通过使用现有的功能测试来解锁早期的负载和性能测试
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢