云原生测试1-2 认识云原生和容器相关知识
一、认识云原生
1.1 什么是云原生
云原生本质是为了能让程序在云环境中运行和迭代的更好而产生的一种设计思想,当今云领域应用最多的是容器技术,所以绕不开Docker containerd Kubernetes(K8s)
正式名称CNCF 云原生 ,关键技术包括容器、服务网络(service mesh)微服务、不可变基础设施和声明式API(应用程序接口)
实现云原生的关键不是在哪里运行,而是如何构建应用。在传统的设计中,应用是和服务器绑定的,一旦服务器崩溃,应用就会停止服务。而在云原生的思维里,应用不依赖某个具体的服务器哦,应用在部署时声明它需要的资源 cpu 内存 GPU 存储等,云平台会自动把它调度到符合条件的服务器中。
云平台接管了软件运行所需要的网络 存储 安全 通信 调度等设计,软件只需要按照规范对接就可以完成以前很高的成本才能完成的工作,开发只需要关心自己的业务实现即可。这就是云原生的目的。
云原生常用的实践方法:
容器化:通常把应用制作成镜像,使得应用与具体的服务器解藕,云平台可以自由的调度资源并充分利用容器的技术优势(快速启动 更低的资源消耗)
微服务化:把应用拆分成一个个独立的微服务,微服务之间采用定义好的API进行通信,
弹性能力:应用的性能可以根据实际的需要进行弹性的伸缩,在系统负载较高时动态地进行扩容,在负载低时通过缩容来回收资源(一个实现了负载均衡的服务拥有两个实例,这两个实例分布到不同的机器中,当业务高峰来临时,系统发现这两个实例的负载较高时可以选择自动在另外的机器中创建一个新的实例,并把它加入负载均衡来共同承担压力,或者不添加实例 单动态地为原来的两个实例增加资源配置)
二、容器技术基础
2.1构建浏览器集群
2.1.1 Selenium Grid
浏览器集群,在中大型项目中测试用例可以达到千级别的数量,比如大数据和机器学习等领域,执行用例时间很长,虽然每种语言都有并发的机制,但都局限于单机范围内,也就是只能驱动单机资源来驱动浏览器的运行,而单机总是灰存在性能瓶颈的。 Grid的架构不在通过webdriver驱动本地浏览器而是构建一个叫做remotewebdriver的对象来连接远程浏览器集群(有两种角色:负责维护并接收测试请求调度到具体浏览器节点的hub,还有负责启动浏览器执行的测试的node)
2.1.2 Docker 部署Selenium Grid
2.2 容器隔离原理
2.2.1 隔离
容器和虚拟机的区别:
虚拟机的虚拟化方案隔离更彻底,每个虚拟机都有自己的独立内核(操作系统)与应用。
容器专注虚拟化技术应用而没有独立的内核,所有容器共享宿主机的内核。
面试题:在部署测试中是否可以使用容器进行测试
答案是否定的 因为容器没有自己的内核
那么容器的好处是什么?
大多时候用户安装软件不会在意操作系统的版本,而节省内核开销会降低用户运营成本,加快容器的启动时间。这就好比用户需要先开机等待系统完全启动后打开qq和用户已经在一个启动的系统中打开qq的区别。
还有容器的不彻底的隔离机制给用户带来更灵活的操作空间,用户可以选择是否打破现有的隔离边界以便让容器之间进行更好的合作(这就应用到了Linux名字命名空间的隔离机制)