活动干货|基于Docker的DevOps实现

作者:精灵云

众所周知,传统开发模式已经面临了诸多难题。首先,在代码集成方面,因为没有合适粒度的代码合并,大规模的合并会有很大的风险,且传统开发模式中没有自动化测试,以至于测试周期特别长,人力成本高昂。其次,传统开发中的单体应用,通常都很庞大,单体应用把所有模块都包含在一个应用中,升级单个模块也需要对整个应用进行升级,所以升级和创新都很不方便,常见的比如银行系统就是如此。
同时,传统的开发模式中单独采用微服务的情况也会由于服务数量多而没有有效管理,在大批量的部署和测试的时候容易出现问题。除此之外,传统开发模式更面临着开发和测试的环境不一致,以及由于没有有效的升级方式导致业务停止的问题。
活动干货|基于Docker的DevOps实现
图片描述
(如何一步步实现DevOps)
为了解决传统开发模式中的问题,目前一个比较流行和彻底的方案是:DevOps流程+微服务理论+使用容器和容器编排工具。在这里展示给大家的是一个理论上的基于容器的CI/CD流程,实际上,DevOps的前身就是CI/CD,实现了CI/CD后,再加上一些发布、部署等标准和管理就构成了DevOps。
活动干货|基于Docker的DevOps实现
图片描述
(基于容器的CI/CD流程)
实现DevOps之自动化测试
那么如何来完整的实现DevOps呢?通常情况下,传统开发模式转向DevOps的第一步是解决自动化问题。要想持续的集成代码,没有自动化测试来保证快速地进行合并后的验证,风险是很高的,而且没有自动化测试,测试环境很有可能成为整个开发环节的瓶颈。只要是经常使用的测试用例,需要尽量自动化每一个操作。
自动化工具很多,对自动化工具和测试框架的选择是需要根据具体应用来决定的,这里只列举其中常用的一小部分——Jenkins、Python、Robot Framework、Shell Script、Selenium、Ansible和Docker Container Orchestration——这些都是我们面对客户需求的时候经常用到的。然而,不是每次集成都需要跑完所有的测试用例,因而对测试用例进行管理,可提高持续集成的效率。
活动干货|基于Docker的DevOps实现
图片描述
(自动化测试)
如何来判断自动化测试用例和框架是否有效?常见的判断依据有三个,首先是自动化测试的覆盖率。如果通过率再高,覆盖率低,那么自动化测试就不是一个有效的,目前企业级比较认可的覆盖率是75%左右,再提高也比较困难。其次是看漏测率,有时候自动化用例本身也可能有Bug,前期阶段通过比较手动测试自动化测试的结果来判断自动化测试是否有效。最后,当产品发布后根据从客户来源的bug数目来判断自动化测试用例是否有效。另外,要稳定一套自动化用例,一般需要2个版本周期或者更长。
实现DevOps之持续集成和持续交付
持续集成一个主要的功能是让每个工程师的代码提交都不会影响到Mainline,以保证Mainline的可发布状态。实施持续集成时,需要注意的地方:
指定规则,提交代码时要一并提交新功能的测试用例。
集成的粒度和频度也很关键。一般一个小模块,不超过1周的时间。
活动干货|基于Docker的DevOps实现
图片描述
(持续集成)
持续集成通过后,根据应用程序的特点,在经过系统集成测试、性能测试、稳定的自动化测试通过率以及管理层的批准后,才是可持续交付和部署的应用程序。
持续交付有两种方式,一种就是基于DevOps的自动持续发布,一种是多个功能一并发布。在持续交付的过程中需要注意三个问题:
1.部署到生产环境后也要有相应的测试;
2.使用Toggle控制功能是否生效;
3.要有回滚的手段(灰度发布)。
实现DevOps之微服务化
有了自动化测试、持续集成和持续交付三块,已经基本实现了DevOps的粗略流程,而为了提高DevOps的效率, 往往需要结合微服务。一个微服务理论上只做一件事,并能用任何语言编写。微服务是松耦合的,意味着一个应用的微服务可以被部署到不同机器上并通过resAPI/RPI来通信,当定义好微服务的API之后,每个team便能独立开发。因此,微服务更容易被测试和实现CI/CD。
活动干货|基于Docker的DevOps实现
图片描述
(微服务的最佳实践)
在微服务的最佳实践中,首先不得不提容器。容器的轻量化让微服务启动很快,同时容器的跨平台性保证了微服务可以在不同的平台启动起来。第二种是使用代理服务器来访问微服务,现在最常见的方式是前端连接一个代理服务器,后端再连接运行同一个微服务的几个相同容器。一个大的应用会使用几十上百个微服务,和微服务不相关的库文件不建议放在容器中。实践微服务中,建议使用配置管理工具(ansible, puppet等)和容器服务编排工具(K8s,Swarm,EcOS等)。
活动干货|基于Docker的DevOps实现
图片描述
(康威定律)
在开发微服务中康威定律起到了很大的作用。康威定律指出任何软件代码都是用来反映组织机构而产生的,如果要采用微服务的开发方法,就需要是把团队划分成多个小团队,由每个小团队负责一个或多个微服务。所以如果要转成DevOps和CI/CD的开发模式,就需要采用这种敏捷开发模式,一个团队7-8个人比较合适。
实现DevOps之容器技术
另外一个实现DevOps的重要手段是Docker容器技术。和传统的Hypervisor相比,Docker没有自己的操作系统,它使用宿主机的操作系统,而Hypervisor需要建立虚拟机,每个虚拟机需要装一个操作系统,因此Docker效率更高更节约资源。如果一台物理机可以操作20个虚拟机,便至少可以启动200个容器,且启动容器的时间是秒级。
图片描述
图片描述
Docker和Hypervisor的对比
使用容器编排工具可以实现对容器的健康检查、动态伸缩、灰度发布和蓝绿发布等功能。而我们提到的容器编排技术,比如K8s,Mesos和Swarm,都是开源的工具,这里我们把精灵云自研的容器编排工具EcOS和开源工具进行了简单对比。
活动干货|基于Docker的DevOps实现
图片描述
(几种常见容器编排技术的比较)
K8s是由谷歌发起的开源框架,最大的问题是太笨重,对使用者来说操作很复杂,学习周期很长。Swarm是Docker公司开发的工具,Docker本身不能支持的功能,Swarm也是无法支持的。如图所示,EcOS是精灵云自主开发的容器编排技术,最大的特点是结合了开源工具的优点,在应用编排上完全可视化。EcOS内置的自研调度框架Newben,在网络、应用迁移、负载均衡、弹性伸缩、调度规则等方面也比开源框架有比较大的优势,在支撑过数万用户和数十万的容器调度考验后,Newben是目前国内定制能力最强,支撑功能最丰富的调度框架。
实现DevOps之灰度发布
如果一个服务由多个相同的容器运行,灰度发布则先对其中的部分容器先进行升级,可混合让老版本和新版本的容器同时提供服务。如发现新服务没有什么问题,则可以把所有剩下的微服务再全部进行升级。
活动干货|基于Docker的DevOps实现
图片描述
(灰度发布)
实现DevOps之版本控制
DevOps下版本控制的原则是始终在Mainline上进行新功能的开发,并经由持续集成的自动化测试对代码进行验证。当功能开发到一定阶段的时候,对可RC的代码创建分支,该分支上停止新功能的开发,只求稳定。当产品发布后,如发现问题,可出hotfix。根据时间点和具体需要,可把其他分支的hotfix merge到Mainline上。
活动干货|基于Docker的DevOps实现
图片描述
(版本控制原理)
Q&A
Q1.微服务是一个抽象概念还是说有具体的工具来实现?
A1:微服务是一种软件架构风格,它以专注于单一责任与功能的小型功能模块为基础,利用模块化的方式组合出复杂的大型应用程序。另一方面,也可以说微服务是一种编程思维,如果是想要开发出能在云上运行的微服务,可参考云原生的12因素法则。
Q2.请问传统的非常庞大的单体应用如何逐步改成微服务?
A2:1)新的功能开发使用微服务方式。
2)把边缘模块换成微服务方式。
3)将前端和后端分离
4)抽出服务,逐步替换。这一步尤为复杂,需要由经验丰富的架构师来主导。
Q3.请问一下刚所说的75%覆盖率,是前后端全部的?
A3:平均覆盖率为75%。
Q4.你们这边Devops应用在什么量级别?
A4:Ghostcloud已经结合Jenkins和EcOS,完全实现了自动化的持续集成。但是目前还有一些手动的系统集成测试和性能测试。
Q5.您所说的企业级应用指的哪种类型的?包括一些复杂的saas应用吗?有没有一些实际的项目事例的自动化测试覆盖率供参考?
A5:银行的管理系统,电商的平台,企业的云平台管理软件等,大型的由企业使用的软件都可以叫企业级应用。SaaS当然可以算是企业级应用。国外很多大公司的代码覆盖率都是这个70%~80%值,可以看一下这篇文章:http://www.bullseye.com/minimum.html
Q6. web ui的自动化测试用的什么工具,比如input框如何search到?
A6:web ui的测试工具很多,比如Robot Framework的Selenium. 对于input框这类元素,可使用xpath来定位。
Q7.负载均衡有啥好的方案 怎么自动发现应用拓扑(ip)变化.
A7:我们目前使用的是HAProxy,并且正在开发Nginx的支持。自动发现使用的是ETCD+DNS+Wather的方式,当容器IP地址发生改变,可自动捕获,并更新代理服务器的配置文件。
Q8.之前我们在搭建paas平台时,花费了很多时间在环境搭建、定位环境问题上,请问对于平台的搭建维护,有什么好的建议?
A8:建议试一下EcOS,一键部署。www.ghostcloud.cn
Q9. traefik专门用来做微服务负载均衡 国内用得多吗?
A9:大多数还是用的HAProxy和Nginx吧。
活动详情链接:https://m.qlchat.com/topic/230000369641573.htm?isGuide=Y
验证码:333

Comsol 超声空化气泡仿真 当液体中受到高能量的超声波作用时,液体中的压力会发生剧烈变化,形成局部的低压区域。当液体中的压力降低到饱和蒸汽压以下时,就会发生空化现象,即液体中形成微小气泡。这种空化常用于一些工业应用,如清洗、乳化、混合等。这种空化常用于一些医学和生物学应用,如碎石术、肿瘤治疗、细胞破碎等。超声空化的应用非常广泛。在医学领域,超声空化广泛应用于诊断和治疗,如超声造影、超声刀、超声碎石术等。在工业领域,超声空化可用于清洗、乳化、混合等工艺。此外,超声空化还在食品加工、化学合成、环境保护等领域有着重要应用。 阅读详情

相关推荐

流媒体学习之路(mediasoup)——simulcast 与 svc 简介(7)

流媒体学习之路(mediasoup)——simulcast 与 svc(7) 文章目录流媒体学习之路(mediasoup)——simulcast 与 svc(7)

qw225967的博客 7341

DevOps—基本概念

这是这个行业演变过程,也是一个公司从成立,到发展壮大的过程,一个公司的项目管理模式演变过程是整个行业演变过程的缩影,不同阶段有不同阶段的模式,达到一定阶段才有改变的必要,不过我们如果提前有这些了解,提前有所准备,那边在转变的过程中就可以少些弯路和内耗。再后来,随着项目的再次扩大,用户对系统的需求不断增加,与此同时,用户给的时间周期却越来越少,时间周期比较长的瀑布流模式不再适用,于是就出现了“敏捷开发”,为的就是小步快跑,持续迭代,快速发现问题,快速解决问题,快速和用户、业主进行确认。

weixin_37648525的博客 9468

OpenAI Function Calling 实战:让 Agent 自动调用外部 API 接口

在 2023 年 6 月之前,大语言模型(LLM)的能力边界是清晰的:它能说会道,能写诗作赋,也能帮你润色文案。但如果你问它"北京现在天气怎么样",它要么答不上来,要么基于过时的训练数据给你一个错误答案。原因很简单——LLM 的训练数据是有截止日期的,它活在"过去"。2023 年 6 月,OpenAI 在 GPT-4 的更新中引入了 Function Calling 功能,彻底改变了这一局面。Function Calling(也叫 Tool Use 或工具调用)是一种让 LLM 与外部系统交互的机制。

2201_76125393的博客 90

Devops基本概念和原理

一、什么是DevOps 1、 DevOps概述 DevOps,即Development and Operations,是一组过程、方法与系统的统称,用于促进软件开发、运维和质量保障部门之间的沟通、协作与整合。DevOps的出现是由于软件行业日益清晰的认识到:为了按时交付软件产品和服务,开发和运维工作必须紧密合作。DevOps可看作开发、运维和质量保障(QA)三者的交集。 DevOps运动源自于提高IT服务交付敏捷性的需要,早期出现在许多大型公有云服务提供商中,并被其认可。支撑DevOps的理念基础是敏捷宣

u014118698的博客 1万+

多思计组实验实验六 微程序控制器实验

实验六 微程序控制器实验

qq_53089329的博客 3789

自动驾驶系统研发系列—全智能驾驶新高度:深入解析车道保持辅助(ELK)功能

车道保持辅助系统(ELK)是一种基于先进视觉感知技术的主动安全系统,能够通过车载摄像头实时监测道路上的车道线、道路边缘以及周围车辆的位置。这一功能的核心在于为驾驶员提供智能化的安全辅助,尤其是在驾驶员可能因疲劳、分心或其他原因无意识地偏离车道时,系统能够主动干预,从而避免危险发生。ELK系统不仅仅依靠摄像头对道路进行感知,还结合其他传感器的数据(如雷达),实时评估自车与车道线、周边车辆的相对位置。当系统检测到车辆即将偏离车道,或越过道路边缘时,ELK会通过控制电子助力转向系统(EPS)

u013889591的专栏 1211

DevOps是什么?DevOps能够给我们带来什么?

Spring Cloud微服务实战系列,打造精品专栏。

学Java,找哪吒 1万+

【漏洞复现】用友NC-Cloud-反序列化-ResourceManagerServlet

NC Cloud是用友公司推出的大型企业数字化平台。支持公有云、混合云、专属云的灵活部署模式。NC Cloud完全基于云原生架构,技术先进、性能稳定、自主安全可控,支撑大中型以及超大型集团企业N层多site混合云部署方案,支持整个系统高可用、弹性扩展、双/多活,以及快速灾备恢复能力等。用友-NC-Cloud ResourceManagerServlet 接口存在反序列化漏洞,使得攻击者可以通过构造特定的请求远程执行恶意代码。此漏洞可能导致攻击者获取系统权限、执行任意命令,严重威胁系统的机密性和完整性。

漏洞复现 1367

什么是Devops?

DevOps(Development和Operations的组合词)是一种文化和实践方法,它强调软件开发(Dev)和信息技术运维(Ops)团队之间的紧密合作与沟通,以自动化化的工具链和可重复的过程,实现软件的快速、频繁、可靠地交付。DevOps的目标是缩短开发到部署的周期,提升软件质量和稳定性,同时增强团队的响应速度,以便更快地适应市场变化和用户需求。

CQ_0712的博客 5829

【ComfyUI】Flux 图像扩展

本文介绍了一个基于Flux扩图技术的ComfyUI工作流,能够智能扩展图像尺寸并保持内容连贯性。该流程通过扩散模型与条件编码的结合,对图像边缘进行语义填充生成,适用于艺术创作、海报设计等场景。工作流包含图像加载、外扩填充、文本编码、扩散采样等核心节点,采用Flux1-fill-dev等专业模型确保生成质量。演示效果显示,系统能自然延伸原图内容,保持风格统一。该技术可广泛应用于插画扩展、摄影增强、游戏场景构建等领域,显著提升创意工作效率。

Mr数据杨 930

基于机器学习的网络安全态势感知模型研究与实现

基于机器学习的网络安全态势感知模型研究与实现 1. 背景介绍 1.1 网络安全态势感知的重要性 在当今互联网时代,网络安全已经成为一个至关重要的话题。随着网络攻击手段的不断升级和演变,传统的被动防御方式已经难以满足日益

AI大模型应用之禅 1583

Devops的概念

1、什么是DevOps? 答:DevOps是产品开发过程中开发(Dev)和运营(Ops)团队之间的灰色区域。DevOps是一种在产品开发周期中强调沟通,集成和协作的文化。因此,它消除了软件开发团队和运营团队之间的孤岛,使他们能够快速,连续地集成和部署产品。 DevOps 就是开发(Development)、测试(QA)、运维(Operations)这三个领域的合并。DevOps是一种软件开发方法,涉及软件在整个开发生命周期中的持续开发,持续测试,持续集成,持续部署和持续监控。 编码——》打包——》测试——》

果子哥丶的博客 6518

微信小程序中使用画布canvas实现动态心电图绘制

近期,接了个项目,三端(小程序、PC、公众号)同步开发,PC端没的问题,以前一直做的就是PC端,但是小程序和公众号之前没有做过,只能通过这个项目,边做边学了。人家都说小程序用原生的特别难,大部分都用uniapp开发,说是这个方便快捷,还能写app呢,因为我们的项目,需要用到蓝牙采集数据、画布画仪表盘以及心电图等,所以我们不太敢用uniapp开发,硬着头皮开始用原生开发。开发的过程中,也遇到过很多问题,但是好在经过我们团队的不懈努力,问题基本都解决了。下面我就来分享一下,在小程序中,如何通过canvas。

穆雄雄的博客 3652

最全的DevOps工具集合,再也不怕选型了!

点击上方IT牧场,选择置顶或者星标技术干货每日送达作者 | Suresh Sekar出品| InfoQ随着 DevOps 的出现频率越来越高,很多企业都在蠢蠢欲动,想要设计和开发...

ITMuch的专栏 5834

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

基于车联网应用场景架构设计PaaS平台以实现DevOps同行技术探讨经验总结

一. 前言眼下大部分车企都承担着自主品牌汽车的研发、制造与销售,在“电动化、网联化、智能化、共享化”的“新四化”趋势下,车企IT平台积极向互联网架构转型,推出了IaaS、PaaS、SaaS...

weixin_55366265的博客 1017

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[转载] DevOps年中盘点:国外最受欢迎的10篇技术文章

本文根据高效运维系列微信群的群友投稿整理而成。“高效运维”公众号作为本系列群的官方唯一公众号,原创并独家首发。 欢迎关注“高效运维”公众号,以免费参加「运维讲坛」每月一次的线下交流活动;并抢先赏阅干货满满的各种原创文章(详见文末)。 编辑 王鹏(翻译) 高浩淼(整理&发布) 引言 【编者按】近日,国外有技术专家在 SEI 攥文盘点了当下流行的 ...

weixin_30606669的博客 236

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

揭秘微软6万工程师DevOps成功转型的技术「武器」

在微软,通过其自身数年的 DevOps 转型, 6 万名工程师实现了更好的软件平台创新和快速迭代。微软有庞大的技术产品矩阵,同时也具有每天发布的能力,其中,微软研发云是支撑整个开发过程与运维最重要的基础平台。微软研发云包括了全球六万名软件工程师每天使用的 Visual Studio Team Service(VSTS),以及一系列虚拟实验室、监控、 部署、移动应用测试等云服务。在开发与运维团队之间

dotNET跨平台 2719

干货丨使用Portainer进行Docker可视化管理

Portainer是Docker的图形化管理工具,提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录用户管理和控制等功能。这里,我们可以看到云耀云服务器L实例提供了非常丰富的镜像,包括宝塔面板、企业建站系统WordPress、Docker可视化Portainer、一站式DevOps平台GitLab等,根据实际需求配置相关参数。其中,当前云耀云服务器L实例搞活动,点击购买按钮,就会跳转到领取优惠券的楼层。

2301_78032981的博客 301

【云周刊】第119期:运维/DevOps在线技术峰会:文章、PDF+回顾视频!

摘要: 阿里云云栖社区在4月20日举办了在线“运维/DevOps”技术峰会,7位阿里技术大咖与1位外部资深实践者进行了演讲,分享了对DevOps、架构的理解,以及在日常运维中的实战经验。本期云周刊头条将本次峰会的讲义PDF+活动视频整理出来,以供大家学习参考。 本期头条 【资料合集】运维/DevOps在线技术峰会:文章、PDF+回顾视频!   从传统IT部署到云,人肉运维已经是

云栖技术精粹 359

Kubernetes杭州集市干货大起底,你get了吗?

2018年3月31日,在美丽的西子湖畔,CNCF Meetup——Kubernetes GeekGathering 2018杭州站与众多新朋老友如约相会,此次技术集会由K8S技术社区、EasyStack、网易云联合主办,谐云科技、网银互联、中国移动协办,IT大咖说为本次活动提供独家视频服务,多场景多层次的议题内容引发在场近200容器技术发烧友多轮“拷问”和热烈讨论! 图片从左至右分别是K8S技术社...

k8scaptain的博客 864

【干货分享】时速云企业级容器PaaS技术沙龙 第八期

目前,基于 Kubernetes 的容器 PaaS 在企业级数字化转型中扮演了越来越重要的角色。而 Kubernetes 在开源容器编排技术里独占鳌头,并在市场中迅速升温,越来越多的企业开始使用基于 Kubernetes 技术构建企业级 PaaS 平台,从而加速业务应用的交付、提高运维效率、实现微服务架构升级。可以预见,未来几年企业级容器 PaaS 市场将呈现出持续的爆发式增长。那么,对于还未使用...

tenxcloud6的博客 439

春眠不觉晓,读书醒醒脑|世界读书日送送送10本硬核书

曾经有人说从一座城市图书馆的数量可以看出城市文化底蕴的深浅而阅读指数关乎国民素质的提升因此无论是阅读纸质书还是电子书在提高国民阅读上都有着很大的意义在生活节奏快速的今天不少技术派为生活奔...

weixin_42485712的博客 320

两小时入门 Docker

点击上方好好学java,选择星标公众号重磅资讯、干货,第一时间送达>>广而告之:打卡有奖活动火热进行中,快来参与吧,来了就有奖作者丨Warm and ...

好好学java 284

HDG 北京站 | 华为技术大牛独家解析新一代轻量级 PaaS 平台

11 月 26 日,HDG 华为开发者汇 北京站之 PaaS 专场,在华为的 FusionStage PaaS 平台下,有 PaaS 公有云服务实战分享,还有 Kubernetes、Docker,这儿有大平台的干货、实际 Demo,午餐茶歇,还有突如其来的思维碰撞。如果你是开发者,或许我们就是你需要的那一抹阳光。

华为开发者社区的博客 4580

极光推送:极光开发者沙龙(深圳站)畅谈高性能架构

6月10日,极光开发者沙龙JIGUANG MEETUP深圳站首场活动在南山区虚拟大学园的触梦社区拉开帷幕。 本场沙龙以《高性能架构的实践与探索之路》为主题,主要探讨高性能架构开发过程中的种种问题,比如ICE的应用、DevOps在私有云部署中的方法等。 极光云服务技术中心高级总监王丰首发出场,以《ICE在系统中的运用》为主题,与在场听众分享了ICE的基本...

weixin_42508242的博客
上一篇: 活动干货|基于Docker的DevOps实现
下一篇: 自研容器调度引擎Newben会成为“中国的K8s”?
ghostcloud精灵云
博客等级 码龄11年 81粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值