DevOps的目的是通过自动化手段提高软件部署的速度和频率,不断的给用户交付价值。之前在实施DevOps时,针对环境管理和发布部署这部分,估计是好多运维人员的恶梦。
环境的无法弹性供给以及因环境配置导致部署的应用出现各种各样的问题,导致为了测试某一个具体的场景,搭环境就需要一周时间,效率从何谈起?应用程序部署上去,不能用,开发人员、测试人员、运维人员相互甩锅,最后发现是环境配置不一样导致的,测试时并没有提前发现问题。这些问题都很常见,不仅浪费了大量的时间和人力,最主要的是会影响产品投放市场的时间,有可能会错过一个关键的机会,被竞争对手捷足先登。
随着容器技术和云计算的快速发展,特别是最近几年,以Docker为代表的现代容器技术和以Kubernetes为代表的容器编排技术,已经占据了云计算的半壁江山。以阿里云,百度云,华为云为代表的公有云平台,已经越来越成熟,未来软件上云已经是不可改变的趋势。
容器技术的发展如此之快,是因为解决了开发人员和企业的痛点。先简单介绍一下Docker,Docker是一个开源的应用容器引擎,开发者可以将他们的应用及依赖包打包到一个可移植的容器中,然后发布到任何流行的Linux机器上,并能够通过容器管理平台,根据实际需求进行弹性供给,可以节约大量的硬件资源,降低企业运营的成本。
Docker的出现加速了DevOps的发展进程,是DevOps实施的加速器。主要原因是:
1、Docker使得软件交付标准化。docker将应用程序及所需要的依赖环境打包成一个镜像,这个镜像可以运行在装有docker的机器上,不管是测试环境和生产环境使用的都是同一个镜像,不会因为环境配置的不同导致服务不可用。
2、Docker使得环境快速供给。docker将一套系统的不同应用服务打包成不同的镜像,通过dockerfile文件编排不同服务的依赖关系以及容器启动的配置,当需要一套环境用于测试时,可以通过dockerfile快速创建,达到分钟级供给。
3、Docker使得企业运营成本降低。docker能够提高硬件资源的利用率,根据业务需求,访问流量实现动态伸缩,相比物理机和其他虚机来说,降低企业成本是最直接的价值,也会得到企业领导层的大力支持。
Docker在交付上标准化,屏蔽了不同应用程序和环境的差异,通过镜像的启动而启动应用服务。同时,容器管理平台标准化的API接口使得应用程序从代码到镜像,从镜像到部署实现自动化,通过将镜像的版本与代码的版本一一对应,实现镜像的版本控制,在应用程序测试,问题分析和问题修复时都能快速定位。Docker自身的发展也带动了Docker生态的发展,目前在开源社区已经有很多围绕docker中服务进行运维的工具,能够保障docker服务的不间断运行。
本文分享自微信公众号 - DevOps探索者(devopsagile)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。