共计 3663 个字符,预计需要花费 10 分钟才能阅读完成。
通过本篇文章您能够理解到以下内容:
- Monolithic 到 Microservices 的思考(回顾)
- 利用现代化策略的评估和布局
- 利用现代化策略的 5R 模式
- 微服务架构设计的最佳实际
- 总结
Monolithic 到 Microservices 的思考(回顾)
首先让咱们做一个简略的回顾:
- 本系列文章的第一篇向大家具体介绍了 Monolithic 架构的劣势、劣势,以及论述了从 Monolithic 架构演进到 Microservices 架构的起因。
- 本系列文章的第二篇向大家具体介绍了 Microservices 架构的劣势以及大家广泛采纳微服务拆分设计的理论指导准则(Domain Driven Design)
通过之前两篇文章的介绍,置信大家对无论是 Monolithic 架构还是 Microservices 架构都有了一个较为清晰的了解和认知,同时大家可能也会存在一些疑难,例如:
- 既然微服务架构具备诸多劣势,那么在利用现代化革新的过程中是否将所有的传统巨石利用都要进行拆分、革新成微服务架构呢?
- 如果对于上一点提出的问题答复是否定的,那么判断掂量的规范又是什么呢?
- 对于不拆分、革新成微服务架构的传统巨石利用,它们利用现代化革新的最佳实际是什么?
- 对于须要拆分、革新成微服务架构的巨石利用,这种拆分、革新的最佳实际又是什么?
接下来让咱们带着下面的这些疑难,走进明天的内容。
利用现代化策略的评估和布局
在利用现代化路线上,咱们首先想的不是用什么技术框架、也不是传统巨石利用怎么进行拆分,革新成微服务架构,而是在咱们已知革新范畴的前提下,从技术和业务角度进行评估和布局革新的优先级。
如上图所示,从技术和业务角度别离列举了须要考量的因素。从技术方面波及到了目前应用何种技术框架、是否应用了专有的工具、系统集成、依赖水平等因素。在此阶段咱们能够通过一些工具来帮忙咱们进行无效的评估,这外面包含手动剖析工具,以及主动扫描工具等。
(手动剖析 SNAP 表格)
SNAP 一种无效的手动剖析工具,首先通过不同语言技术栈创立不同模版,在模版中会蕴含诸多技术因素,以 Java 为例,例如 JDK 版本、缓存(Caching)应用何种技术、编译工具(Ant、Maven、Gradle 等)、代码测试覆盖率、数据拜访模式(ORM 何种技术框架)等因素。通过一系列因素的填写,判断,最终会得出一个分数,分数代表了革新的难易水平。
相比 SNAP 手动剖析的状况,在能够获取源代码权限时,咱们能够采纳自动化扫描工具VMware Cloud Suitability Analyzer(简称 CSA)。CSA 扫描规定采纳 yaml 形式进行编写,依据编写规定,CSA 会对利用进行扫描,并最终会失去技术改造老本高下的分数(云亲和性),通过此分数,咱们能够很好的从技术角度进行判断,举个例子,如果应用 EJB 和应用 Spring Boot 这两种不同的框架,革新的老本是大大不同的。
(VMware Cloud Suitability Analyzer)
另一方面,从业务维度波及到了咱们革新后带来的收益是什么? 革新过程的危险又有多高? 这个利用零碎对应的业务重要水平又是怎么? 业务变更频率等因素。
利用现代化策略的 5R 模式
在上一章节咱们理解到,通过技术、业务角度进行评估并非所有传统利用在现阶段都适宜进行拆分、革新成微服务架构。依据评估和布局,咱们能够把传统利用进行利用现代化革新归结为 5 种形式。如下图所示:
咱们首先来看看对于 Retire、Retain、Rehost 的解释。
Retire
外围关键词“服役”,顾名思义这一类利用进行开发、保护,并由新的 SaaS 解决方案进行代替。
Retain
外围关键词是“放弃现状”,这一类利用并不会进行迁徙革新(上云)而是持续交给团队进行本地优化和保护。之所以呈现这类状况的起因很多,例如迁徙革新老本过低等因素。
Rehost
外围关键词是“转移、移动”,这一类利用会从本地迁徙到云上进行托管,即能够了解为由现有本地物理机和虚构服务器上进行部署转移到云上 IaaS 解决方案的过程。值得注意的是 Rehost 可能会促成将来利用架构的降级、革新。
接下来是 Replatform 和Refactor,这里咱们重点探讨下这两类模式。
Replatform
实用于业务性能绝对固定、无需改变的利用零碎。这种形式的特点是大量改变与内部依赖的相干代码以及大量批改相干配置。以镜像形式进行部署、运行在 Kubernetes 中。尽管改变会带来一些老本的减少,然而通过这种革新,能够享受到云原生带来的局部技术红利。
Refactor
实用于业务性能继续变动、更新较为频繁的利用零碎。这种形式通常的做法是重构、拆分现有的巨石利用,并设计成微服务架构,同时采纳云原生的相干技术。
须要留神的是,在 Refactor 模式下,咱们须要将传统利用进行拆分、革新成微服务架构。接下来就让咱们看看微服务架构设计的最佳实际是什么?
微服务架构设计的最佳实际
整体来说微服务架构设计包含两大方面,技术方面、业务方面。
对于技术方面:
咱们能够了解为在曾经拆分好微服务的根底上,通过选定的技术框架进行落地施行。以 Java 技术栈为例,咱们能够通过 Spring 提供的全家桶解决方案 Spring Cloud 来帮忙咱们构建微服务架构,亦或应用 Spring Boot 并联合 Kubernetes 进行构建。至于 Spring 技术体系的相干内容,本章节不做过多阐明,后续的文章中会向大家进行具体的介绍。
对于业务方面:
咱们能够了解为依据业务理论状况如何进行微服务的划分。VMware 在进行微服务架构设计方面,是采纳 SWIFT 方法论,是由 Pivotal 在 2016 年发明进去的。
接下来让咱们看看什么是 SWIFT?
SWIFT 定义:
SWIFT 是一种轻量级、麻利、高效同时又疾速的将单体巨石利用拆分、转化为微服务架构的办法。SWIFT 从业务畛域剖析动手,逐渐过渡到架构设计。以 Workshop 对话的模式进行,同时交融了畛域驱动设计(Domain Driven Design)的思维和准则,整个过程更多的是引入了白板、贴纸等可视化元素,促成各领域专家、技术、治理等多角色人员独特参加和合作。
既然 SWIFT 是一整套的可能落地的办法,那么它的流程是怎么的呢?
(详细信息参考: https://tanzu.vmware.com/deve…)
从图中能够看出整个 SWIFT 流程概括为七个步骤,这外面着重介绍下 Event Storming、Boris Workshop、Snap-E、Thin Slice 步骤。
Event Storming
事件风暴(Event Storming)疾速挖掘和梳理业务流程,造成业务边界、初步的微服务划分,并造成对立的业务语言。
Boris Workshop
生成利用零碎的概念型微服务架构,确定利用零碎交互方式(同步、异步)
Snap-E
在进行 Boris 的同时,实时的记录下每个微服务的因素,这些因素包含(API、DATA、PUB/SUB、STORIES、UI、RISK)。
(实在场景)
Thin Slice
一个薄切片(thin slice)指的是一个短的畛域事件流,通常是对于最终用户有意义的一个端到端的业务流程。
总结
回顾全篇内容,整体包含以下三方面内容:
- 首先回顾了 Monolithic 架构和 Microservices 架构,并引申出既然微服务架构具备诸多劣势,那么是否在利用现代化革新的过程中,将所有传统巨石利用都须要立马进行微服务架构的革新等一系列疑难。进一步理解到,咱们须要做的是通过正当、迷信的伎俩进行利用现代化策略的评估(技术、业务两个维度),同时在评估实现后,会进行对应 5R 模式的归类。
- 其次对于利用现代化策略的 5R 模式进行了解读
- 最初针对于 Refactor(传统利用重写、革新成微服务架构)这种状况,进行了具体介绍,这其中包含 SWIFT 办法的定义、实际流程等。
同时在 SWIFT 办法中的 Event Storming、Boris Workshop、Snap- E 又能够了解为从业务角度微服务架构设计的三把利器。那么作为利器之一的 Event Storming 具体实际流程的细节是怎么的? 又有哪些参加人员? 在这个实际过程中又会联合应用哪些工具? 对于上述问题,在下期的文章中会持续和大家进行交换分享,敬请期待! 如您有任何倡议,欢送随时分割咱们!
参考链接:
1.https://tanzu.vmware.com/appl…
2.https://github.com/vmware-tan…
3.https://tanzu.vmware.com/deve…
作者简介
李刚,VMware 大中华区利用现代化部门高级零碎架构师,资深企业级软件开发和软件系统架构师。Spring Cloud 开源社区我的项目贡献者、Netflix 开源社区贡献者。近几年,参加并主导了许多大型企业客户的利用现代化数字转型我的项目,波及物流、制作、金融等诸多畛域。特地对微服务实现办法、现代化利用架构设计、云原生施行落地、开源软件技术等方面有着丰盛教训。
起源|公众号:VMwareTanzu 云原生