随着容器化技术的成熟,以及容器编排技术自动化的发展,应用程序开发越来越多的向薇服务架构眼睛,那么我们经常遇到的一个问题,就是我们的微服务实现的怎么样?我们实现的微服务是真的为服务吗?还是只是包装变了一下。
之前我写了两篇文章,
今天这边文章想从更大的颗粒度上去认识甄别判断为服务的实现的成熟度,这个有助于从外部,以及整体来理解我们的微服务程序的成熟度。
我认为这可能是最重要的一个原则。 一个微服务只解决一个领域问题,或者我们认为是一个商业问题,所有的更改变动只会一个核心问题。 当然,面对一个复杂的领域问题,这个也是比较难以直接给出答案的。 但是如果没有遵循这个原则,往往会带来很多的痛点。 比如:
那么什么程序,不适合云部署呢? 我们可以从下面几个指标来看。:
具备健康检查接口。 不同于传统的应用程序,部署在容器环境呢,都是平台字符物质管理的要求应用程序需要有健康检查接口才能完成容器应用的字修复,以及运行健壮性。
所以一个微服务的很重要的一个特性,就是要快速开发测试发布一条龙,迭代中间不允许有太多事务性步骤。
要是和自动化维护的高效率很大程度上要利用现代化的DevOps工具方法以及理念。 这就要求我们的应用程序能够自动化。,依赖能够识管理。 比如存储。,数据库
CICD Pipeline
单一分支 发布管理 Trunk-based branch management 之所以强调,这一点是因为微服务程序,往往具备快速迭代。,快速演进的特征,他不同于传统应用大而全发布节奏相对缓慢。
那么如果微服务程序还沿用原来的产品分支模式需要长期维护一个分支,导致多个分支,同时维护这种情况势必会减慢迭代速度增加团队负担。 使用单一分支模式,往往需要其他的一些配套措施:
减少非业务功能的开发。 现代化的容器平台,提供很好的容器运营时环境包括服务发现,服务治理,配置管理,等等基础支撑,所以我们的应用程序要避免重复这种轮子,加重微服务应用开发的负担。
另一个原因是传统的服务发现机制,对于代码有较强的侵入性,影响微服务的快速迭代,
传统的微服务发现机制呢,也不是一容器话环境的部署,因为荣庆换环境运行IP是不固定的, 而传统的服务发现呢,往往依赖到固定IP来提供服务。