22

微服务和DevOps和容器关系(12.28)

 4 years ago
source link: http://blog.sina.com.cn/s/blog_493a84550102z6f3.html
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.

qQzummR.jpg!web

前面自己写过很多微服务,DevOps,容器化PaaS平台方面的文章,今天再梳理下几者之间的关系问题。

首先看下微服务,我们把微服务里面的一些关键组件拆分出来,其中包括了注册中心,配置中心,网关,限流熔断,服务链监控,可以看到这些组件都是可以独立的关键组件。

其次我们看下DevOps平台,在我原来的介绍里面也可以看到,我们将DevOps平台做为一个大的支撑平台,但是拆分后可以看到里面包括了敏捷研发管理,持续集成,容器化PaaS,测试平台等几个关键内容。再扩展点可能还包括了技术服务平台,后期的运维管理平台,面向生态的运营服务平台等。

微服务和API网关的关系

微服务,首先是业务组件化,从数据库到应用的全垂直化拆分。微服务一般采用SpringCLoud框架来进行开发,建议仍然是前后端开发分离的方式进行分层开发,更好的体现中台+服务+前端的思路。

谈到微服务,先谈和API网关的关系。对于微服务架构一定会用到微服务注册和管理中心,但是不一定就必须采用微服务网关。那么在什么时候需要引入网关,个人理解包括:

1. 前端有pc端,app端多种呈现方式的时候,需要引入网关,网关本身还起到类似DMZ区隔离作用。

2. 跨厂商团队协同的时候,需要引入网关,方便对不同厂商协同接口进行统一关联。

3. 中台能力需要对外进行能力开放的时候,需要引入API网关,方便对服务进行统一安全,日志,流控管理。

网关的引入增强了服务在安全,日志,流控,监控等方面的能力。注意如果仅仅是服务代理,你可能通过简单的ngnix来实现即可,但是要实现上面的诸多能力就必须要引入网关。

在谈微服务和DevOps的时候,我们把DevOps的核心能力进行拆分,包括研发管理,持续集成和交付,容器化PaaS几个关键核心能力。然后再来分析相互之间的依赖关系。

在转型到微服务的时候,个人认为实施持续集成是必须的,比如你通过jekins和maven结合来实现持续集成和持续部署,这个能力必须要用,但是你开始可能并没有实现容器化PaaS,这个影响不大,因为持续集成和自动化构建后已经解决了大部分问题,并不一定必须启用容器和镜像。

同时对于持续交付也不是必须,先做到持续集成,然后再考虑进一步做到持续交付。

微服务和DevOps平台关系

同时在实施微服务和DevOps的时候,容器化PaaS一开始也不是必须的,没有容器化PaaS我们也可以去实现自动部署能力,但是会缺失类似资源动态调度和扩展方面的能力,缺少对资源统一管理方面的能力。同时对于各个环境之间的迁移,到生产环境的持续交付也不方面。

一个容器镜像里面不仅仅是包括了中间件容器和部署包,可能还包括了其他一些配置文件,我们预安装的一些组件,要看到容器镜像完全将这些打包为一个整体,如果没有容器镜像粒度,我们在进行环境迁移的时候会相当麻烦,而且很难确保整个过程不出现差错,出现不一致的情况。

那我们考虑什么时候必须引入容器化PaaS,具体如下

1. 整个微服务的团队和模块规模都很大到一定程度的时候,必须要引入

2. 对于环境迁移和持续交付有明确的要求的时候,特别是对于持续交付的高要求

3. 对整个部署架构有明确的资源动态调度和弹性扩展需求

4. 需要更好的对IaaS平台层资源池进行统一的管理和资源分配

简单来说就是规模一大,而且需要贯穿到最终的交付环境必须引入容器化PaaS平台。来实现自动化的部署,应用托管,动态的资源管理和调度,持续到生产环境的交付。

因此对于DevOps也是同样的道理,一开始你可以没有容器化,但是后续必须要容器化,而且容器化这块要必须松耦合,即可以对接当当前主流公有云的IaaS平台,或容器化PaaS平台。

简单总结下前面阐述的内容,即:

1. 微服务架构和实施不一定需要DevOps完整体系,但是至少需要持续集成

2. DevOps不一定必须包括容器化PaaS平台,但是必须提供自动化部署的能力

3. 微服务不一定必须要API网关,再需要增强服务管控治理能力和对外能力开放时候必须采用API网关。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK