《企业级容器云架构开发指南》—1.3.3 容器技术带来的变革
1.3.3 容器技术带来的变革
容器技术带来了诸多的变革。首先,Docker推动了微服务架构设计理念的落地,把一个原来很庞大的复杂的单体(单进程)应用拆成一个个基于业务功能的完全独立的小程序,并且分布式部署在一个集群中,以增加系统的稳定性、水平扩展能力,这就是微服务架构的核心思想和做法。微服务架构相对于传统单体应用来说,有两个明显的优势:第一,在开发上一个很大的团队完全可以拆成一个个小的专业团队,各自关注不同的业务功能的开发,因此系统的开发迭代、更新和升级就会变得非常敏捷;第二,由于微服务架构本身就是分布式架构,所以很容易实现系统的高可用以及快速弹性扩容能力,当某一个业务随着访问量的增大而出现性能瓶颈时,我们就能快速地对其进行弹性伸缩,增加服务实例数量,以改善整个系统的性能。
实际上微服务的理念很早就已经提出,微服务要求我们把一个完整的应用拆成一个个独立部署的微服务进程,并且部署在多个机器组成的一个集群中,每个机器上会部署很多微服务进程,不仅大大增加了系统发布、测试和部署的工作量,后续系统升级和运维管理的难度和复杂度也会大大提升。因此在缺乏自动化工具和相关平台支撑的情况下,微服务架构很难落地,长期以来只在一些大的互联网公司推行。
但Docker的出现改变了这一切。在Docker的帮助下,我们可以把每个微服务进程打包成独立的镜像,存储在统一的镜像仓库中,升级后的版本打包新镜像,采用新的Tag标签来区别于旧版本。只要写一个简单的脚本,以容器方式启动各个微服务程序,就能很快地在集群中完成整个系统的部署。还可以借助Docker引擎提供的API,以编程方式来实现图形化的管理系统,一键发布系统、一键升级、自动修复系统等高级功能也都容易实现了。实际上谷歌开源的Kubernetes平台首次将微服务架构的思想贯穿到底,在Kubernetes的世界里,任何一个应用都由一个个独立的服务(Service)组成,一个具体业务流程实际上是由一个个服务串联在一起而完成的,部署应用的时候也按照服务的方式部署,不用关注服务到底会分布到哪些机器上,因为Kubernetes会自动调度Service对应的容器实例到可用的节点上,并提供高可用和弹性伸缩功能。实际上Kubernetes目前实现的功能特性早已超过微服务架构本身的要求,因此越来越多的公司开始使用Kubernetes平台打造自己的微服务架构系统。
其次,Docker大大提升了软件开发和系统运维的效率,促进了DevOps体系的成熟与发展。
Docker最大的特点是对应用的发布版做了一个标准化的封装,解决了应用的环境依赖难题,并且不再需要安装部署过程。开发人员打包应用镜像之后就可以将镜像原封不动地转给测试人员,只要执行一个简单的启动命令,测试人员就可以在任意支持Docker的机器上成功运行应用程序并进入测试阶段。如果测试通过了就可以把这个镜像上传到镜像库中,随后运维人员可以直接从镜像库里把镜像拿出来并部署在生产集群中。这个过程完全可以建立一套标准化流程,因为每个环节传递的都是经过认证的标准化镜像,因此可以在后台通过一系列工具来控制整个流程的实现和度量。
通过一个流水线串联并驱动整个应用的开发生命周期过程,包括源码编译、镜像打包、自动部署或升级(测试环境)、自动化测试,以及运维阶段的监控告警、自动扩容等环节,这就是DevOps的实践思路。由于在这个过程中引入了Docker技术,从而很大程度上提升了系统运维的可管控性、可度量性、可监控性等重要指标,这就是Docker带来的第二个重要变革:进一步促进了DevOps的落地和发展。因此,在容器化平台改造建设完成之后,下一个重点目标就是建设DevOps平台,以促进整个软件的开发运维流程进一步向自动化、可管控性的目标迈进。
容器技术虽然是由Docker公司开源出来并发扬光大的,但背后是以谷歌为首的IT巨头在推进并且其已经成为标准规范,类似当年的J2EE组织,所以容器技术的影响力和影响范围会进一步扩张。
容器技术也是搭建企业PaaS平台以及新一代私有云最核心的技术,当前流行的Kubernetes和Mesos,其底层都是以容器技术为基础搭建的,而且越来越多的企业正基于Docker和Kubernetes来改造或新建自己新一代的PaaS平台。
容器技术正在加速侵入IT的各个领域,并且影响和改变着整个生态圈,软件的设计理念、软件生命周期流程都因为容器技术的引入而发生革命性的变革。因此,可以毫不夸张地说,容器技术正在改变整个世界。
- 点赞
- 收藏
- 关注作者
评论(0)