52

对DevOps实践的一些思考02(1.16)

 5 years ago
source link: http://blog.sina.com.cn/s/blog_493a84550102ymz4.html?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在上篇文章,主要对DevOps的一些关键概念做了进一步解释和说明。对于DevOps实践,今天主要对一些零散的点做记录,在年后准备对基于我们的DevOps支撑平台进行DevOps实践写一系列的文章。

该系列文章具体的内容预计会包括:

1. 传统软件过程和单体技术架构存在的问题和需求分析

2. DevOps支撑平台的搭建和总体架构

3. DevOps支撑平台涉及到的工具集集成

4. DevOps实现端到端流水线作业和持续交付过程

5. DevOps与容器技术集成实现自动化部署和环境迁移能力

6. 基于DevOps的度量分析和最佳实践

7. DevOps平台和微服务开发框架的集成

8. DevOps平台和PaaS平台技术服务组件和技术服务能力的集成和最佳实践

9. 基于DevOps平台实现的典型案例和场景分析

下面对上面这些点做一个简单的展开说明

1. 传统软件过程和单体技术架构存在的问题和需求分析

再次说明一下,不要为了微服务和DevOps而去迎合,要业务和技术需求驱动,比如当前软件开发过程,软件交付上究竟有哪些问题,是否已经影响到效率和质量。包括我们说的微服务架构的数据库拆分也是一个道理,技术成熟度不够的时候,你完全可以数据库不拆分,只拆上层组件,这也是折中可行方案。对于持续交付同样,前期你完全可以不用DevOps和容器化,仅仅实现传统持续集成最佳实践即可。

上任何新东西都必须要想清楚,具体解决的是资源,成本,效率,后期管控治理哪方面的问题。一定要有实际的需求和问题驱动,否则很难真正实践成功。包括我们现在看到的很多互联网架构最佳实践,都是互联网应用在面对海量数据,大并发实际场景下逐步积累和演进出来的。

2. DevOps支撑平台的搭建和总体架构

一个DevOps支撑平台在搭建总体架构的时候可以看到,其核心更多的是围绕持续交付进行的各种能力的集成和自动化,而不是说其本身新创作了什么能力。对于这种集成本身包括几个关键部分。

其一是和Docker容器化平台的集成,以实现自动化部署和环境间的动态迁移,包括灰度发布,资源动态调度,集群等关键能力。其二是和微服务平台的集成,类似开源的SpringCloud平台中的注册中心,微服务网关的集成。其三包括和前面提到的PaaS平台各技术组件和服务的集成。其四则是对持续交付过程中的涉及到的各类工具链的集成,包括了配置和代码管理,代码静态检查,自动化编译构建,自动化测试,自动化运维,自动化监控,日志管理等各种工具的集成。

一个DevOps平台需要提供对源代码管理,开发,编译构建,打包,部署,测试,运维完整的能力支撑,同时通过流水线设计将这些任务过程进行自动化串联。一个流水线既可以是完全的自动化流水线,也可以包括人工处理和检查节点。流水线可以对上述动作和任务进行可视化的设计和编排。

5. DevOps与容器技术集成实现自动化部署和环境迁移能力

一个DevOps支撑平台离不开和容器化PaaS平台的集成,即最终的编译构建完成的内容形成镜像并放到镜像仓库,后续部署,环境迁移,资源扩展基于镜像仓库进行快速的拷贝和复制。对于Docker容器一般会和K8S结合来实现资源的动态调度,集群管理能力。

环境迁移是基于镜像进行环境拷贝和迁移,而不再需要重新构建和打包,这也是我们原来在谈持续集成技术的时候一直强调的一点。只有这样才能够保证测试通过的包就是最终部署到生产环境的包。

6. 基于DevOps的度量分析和最佳实践

在谈CMMI的时候我们经常会谈到软件度量,而对于DevOps也有标准的成熟度模型,我们需要对DevOps执行构成中的关键活动和任务,其执行的质量和效率进行度量分析,以确认DevOps过程执行效果,并指导后续的持续改进工作。

这里面既会涉及到构建,部署和自动化测试的效率指标,也会涉及到传统的代码检查和人工测试,变更处理,缺陷泄露等质量指标等。

7. DevOps平台和微服务开发框架的集成

实际上要把这个功能谈透彻并不容易,一涉及到微服务架构开发模式,就涉及到基于微服务架构下的团队拆分和多团队协作,就会引入类似微服务网关和注册中心等基础能力。就会涉及到一个独立的微服务模块要真正能够运行并进行单元测试,离不开其它微服务模块提供的API接口服务能力支撑。

因此这种集成不是件的对开源微服务框架在开发态的集成,更多的是开发态如何和运行态集成和协同。如何在多团队协同模式下来实现多项目,多微服务模块的集成能力。实际上这个问题在我13年左右在谈私有云PaaS平台的持续集成的时候详细分析过,但是现在感觉在谈微服务架构和DevOps的时候反而没有谈透彻。

8. DevOps平台和PaaS平台技术服务组件和技术服务能力的集成和最佳实践

这个也是需要专门写文章来谈的,就是对于PaaS平台提供的各类技术组件和技术服务能力,如何和整个DevOps持续交付过程集成起来。当然对于单个技术组件的开发,测试和部署上线也可以使用DevOps支撑平台来完成。在原来谈私有云PaaS平台的时候,我们谈到过一个概念,即一个组件要能够运行起来需要两个方面的服务集成,一个是技术平台提供的技术服务能力集成,一个是横向的其它微服务模块组件的接口服务集成。

如何集成,包括在集成后如何进行集成测试,都是需要考虑的问题点。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK