微服务架构技术层面的DevOps实践和总结
技术层面的DevOps偏开发,产品层面的DevOps偏交付和服务保障;
下面主要讨论DevOps在开发中的使用和实践;
以把DevOps看作开发(软件工程)、技术运营和质量保障(QA)三者的交集。
现在敏捷开发和微服务架构的使用,对开发部门的要求越来越高,需要在保证开发进度和开发质量的同时频繁的进行高质量的交付,加大了开发部门的工作量,于是就需要引入DevOps的概念和自动化的概念;
自动化的概念包括:开发自动化,测试自动化,运维自动化,其中自动化程度最好的就是运维自动化也是工作量最大的一部分又分为:自动化构建,自动化部署,和自动化发布;
Dev部分自动化部分较少,毕竟大部分代码还是需要开发人员去写,发现的问题需要开发人员亲自去排查和修改,单元测试需要一个一个的写;现在已经实现自动化的部分是:脚手架,项目模板,代码模板,自动化单元测试;
QA部分,以为一般情况为了进行质量保障都会将开发和测试分开,因为测试部分技术相对独立,目前自动化程度到多少了了解不多,再次不再详述;
Ops部分,这部分是自动化程度最高的部分,只需要进行简单配置,几乎完全实现了自动化,几乎无需认为参与;包括:自动化构建,自动化部署,自动化发布;相关的技术是:CI/CD和pipline ,对应的工具是:gitlab-Ci和Jenkins;
DevOps和微服务的基础设施:IaaS,PaaS和Kubernetes(CaaS );
IaaS是设备既是服务,主要是我们开发过程中需要用到的服务器和网络的硬件资源;
PaaS是平台既是服务,主要是我们开发过程中需要用到的各种服务如:运行环境,数据库,存储,缓存,消息服务,集群和负载均衡;
两者的区别是Iaas自己买硬件资源然后再上面搭建自己需要的各种服务和平台如何程序运行环境,搭建数据库和网络集群;而PaaS是直接购买已经搭建好的各种服务,不需要自己亲自搭建和优化和自己维护;PaaS要比IaaS的服务更好一些;
Kubernetes是Paas中的一个服务产品既容器服务提供了微服务架构中所需要的运行环境,网络,集群和负载均衡,存储以及扩容服务,能够提供应用部署,规划,更新,维护的一整套完整的机制;因为kubernetes提供了太过完善和完整的服务以至于出现了新的服务既CaaS:容器既服务;
为了让微服务更好的落地建议直接研究Kubernetes的容器服务的搭建和配置,使用和维护;
重点关注两个工具:Jenkins 和 Kubernetes, 是实现我们自动化流水线和微服务运行的两个重要的工具;容器服务:是运行微服务的重要的实施环境;