伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化。传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型。
通常提到DevOps,大家浮现在脑海里面可能是研发规范、持续交付、敏捷迭代相关的一系列事项,组织上推行打破部门墙,文化上推行活泼、皮实、互助等方式促进效能提升。但是,除了这些,还需要更多的工具、技术来让这一切真正的落地。
所谓的DevOps,指的是开发运维一体化,也被称之为开发运营一体化、开发测试运维一体化,现在有些领域也衍生出来更多提法:开发安全运维一体化(DevSecOps)。总之,都是在致力于产品从开发到落地的整个生命周期过程管理。
我们目前也处于数字化转型的新时期,面对DevOps的具体落地,大家需要了解这几样新时代神器:Docker、Kubernetes、Jenkins、Spring Cloud、Service mesh.他们是DevOps技术栈的典型代表,也可以说必不可少的支撑技术,我们来悉数一下这些神器们。
Docker的出现可谓是极大的推动了DevOps的发展,让DevOps重新燃起新的青春。Docker最大的颠覆在于镜像的理念,将应用所需的依赖环境,全部隔离起来,让应用的部署插上了翅膀。可以说基于容器来构建服务栈的方式变得非常优雅,远远超越了自动化脚本的方式。
Kubernetes代表了新一代云计算热潮的PaaS平台技术方案,可以简单的类比为OpenStack、CloudFoundry的替代方案(当然还是有很多不同之处的)。作为容器集群管理系统,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能,可以将容器编织成一个大大的云。
Spring Cloud,这个名字起的可以说,非常契合时代发展的脉络!在很多场合,很多人眼里,Spring Cloud就是微服务!虽然这么理解有失偏颇,但他提供的众多特性,确实解决了微服务研发过程中的很多痛点,是微服务架构的集大成者。这是继Dubbo RPC框架以后的新秀,也迅速的深入人心,几乎成了业界写微服务代码的主要框架。
Docker容器的出现,从另一个角度来讲,极大的促进了微服务的发展,每一个容器可以形象的打包为一个个的小盒子,而微服务就是装在小盒子里面的宝藏,每一次的服务调用,就像是在散发光芒。
容器技术的火爆,彻底的颠覆了PaaS平台的构建方式,企业进行数字化落地也有了更好的选择。尤其是弹性伸缩、自定义网络、环境隔离等特性,加上CI、CD过程可以结合Docker镜像和Compose编排,使得新一代PaaS平台脉络也更加清晰,应用从源码态到运行态,一条链路就可以完美跑下来。以下是可供参考的基于DevOps工具链的平台架构:
有了上面的这些神器,一个基于DevOps理念的PaaS平台就基本落地了,但人类不止于这点小进步,在服务调用的层面不断开拓创新,提出了更优秀先进的提升方案,于是就有了Service Mesh。
Service Mesh 又译作“服务网格”,作为服务间通信的基础设施层,是云原生应用的必要支撑,可以将它比作是应用间的TCP/IP,负责应用间的网络调用、限流、熔断和监控,可以将网络功能从代码中剥离出来。采用 Service Mesh, 你不用在服务代码中实现用于可靠通信的模式如断路、超时等,类似地,Service Mesh 也提供了服务发现、服务可见性等其他功能。以下是Service mesh的架构图:
可以说Service Mesh经历了几个发展阶段,也代表了以应用为中心的网络通信进步:
1.从最原始的主机之间直接使用网线相连;
2.网络层的出现;
3.集成到应用程序内部的控制流;
4.分解到应用程序外部的控制流;
5.应用程序的中集成服务发现和断路器;
6.出现了专门用于服务发现和断路器的软件包/库,如 Twitter 的 Finagle 和 Facebook 的 Proxygen,这时候还是集成在应用程序内部;
7.出现了专门用于服务发现和断路器的开源软件,如 Netflix OSS、Airbnb 的 synapse 和 nerve;
8.最后作为微服务的中间层 service mesh 出现;
可以看到,技术界发展到这个时期,针对DevOps落地这件事,实现工具已经很丰富了,可以说层出不穷,不断的刷新着我们的工具链。企业在数字化转型的过程中,也可以根据团队的实力,选择适合自己的工具。当然,真正的转型成功,是需要工具、规范、文化、技术、业务等全方位配合,匹配到企业的发展节拍,创造新的业务增长奇迹。
原文地址:http://blog.51cto.com/14084875/2345382