文档章节

实施微服务架构前,你得想明白这几件事

好雨云帮
 好雨云帮
发布于 2017/08/03 15:25
字数 1012
阅读 13
收藏 0

对于任何一家技术企业来说,敏捷性都是至关重要的。面对不断变化的技术和行业环境,如果一家公司需要花很长时间才能对变革做出反应,那么结果很可能是将市场份额拱手让给更敏捷的公司。

微服务将应用拆分成小业务单元进行开发和部署,使用轻量级协议通信,通过协同工作实现应用逻辑的架构模式,给予了应用更高的敏捷性、可伸缩性和可用性,而这也正是公司在扩大和推出新业务时所急需的。

听起来很有价值,事实上微服务架构也的确称为了众多前沿公司的可行选择,但在实施之前,你得想明白这几件事:

业务是否足够大

你的业务是否足够大,有必要让开发团队在复杂项目上分头工作?如果没有,你可能暂时并不需要微服务架构。就像Martin Fowler所说,微服务架构的生产力成本只适用于大型复杂的软件项目。

是否需要独立部署组件

如果你部署的软件项目有至少两个domain,每个domain代表完全独立的业务能力或流程,那么实施微服务架构将是一个适合的选项。这样做可以使应用的各个组件开生命周期独立开来,在更新或部署应用程序时,不会影响其他组件。此外,可以让每个组件采用不同的编码语言。当然,微服务架构同时会需求单一组件由专门的开发团队动态管理,因此你需要确保有足够的人才和预算来这么做。

团队是否有足够能力

微服务架构意味着,你需要创建专门从事某些专业领域的小型开发团队,提高新功能开发和增强竞争优势的能力。

因此团队是否成熟,是否可以实现CI/CD,是否理解DevOps?如果答案是否定的,着手建立更强大的工程师团队,或找到可以帮助补充团队能力的外部资源,例如像Heroku好雨云这样的提供开发、运维、应用交付支持的云平台。

公司的roadmap是否实际

指数级的扩张能力让一些巨头公司发展成了现在的样子。例如Airbnb,在不到10年的时间里,从床位租赁网站发展成为了300亿美元规模的数据驱动型marketplace。对于成长型公司来说敏捷十分重要,但不是所有公司都有很大的扩张需求。如果你不需要面对复杂性的问题,那么其实是没必要实施微服务架构的。

因此要对公司的发展有一个客观的判断,至少是短时间内的成长判断,最好不要让开发流程在不需要复杂的时候过于复杂。

最后,当你确定要实施微服务架构,以下几点经验值得留意:

  • 实施微服务架构后,一定要广泛使用一旦实现了微服务架构,一定要广泛使用领域驱动设计(DDD,Domain Driven Design),特别是bounded contexts
  • 对于bounded contexts的定义没有特别的规定,这取决于你使用的domain,当然一般情况下,context map是不错的选择
  • 每个微服务应代表一个业务能力的,你应该专注于把组件做好,独立于其他服务
  • 确保你的团队结构跟定制的bounded contexts保持一致。为了更好的享受微服务架构的优势,你的团队应该围绕业务能力建立,而不是建立会增加额外负担的“横向”团队

© 著作权归作者所有

共有 人打赏支持
好雨云帮
粉丝 17
博文 92
码字总数 107058
作品 1
东城
一个六年Java程序员的从业总结:比起掉发,我更怕掉队

恍然间,发现自己在这个行业里已经摸爬滚打了五、六年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却遭到了重大的挫...

老道士
昨天
0
4
图解微服务架构演进

原文出处: 泥瓦匠BYSocket 前言 来自dubbo的用户手册中的一句话: 常规的垂直应用架构就相当于传统的那种,现阶段传统垂直架构改造的核心就是对应用做服务化改造,服务话改造使用的核心技术...

刘星石
2016/03/09
36
0
一个五年Java程序员的从业总结,献给还在迷茫中的你

你愿意做码农吗? 恍然间,发现自己在这个行业里已经摸爬滚打了五年了,原以为自己就凭已有的项目经验和工作经历怎么着也应该算得上是一个业内比较资历的人士了,但是今年在换工作的过程中却...

Java填坑之路
09/13
0
0
阿里巴巴前架构师 360 度无死角剖析微服务

微服务是当前软件架构领域非常热门的词汇,在社区中也有很多热烈的讨论。因此,在 OSC 第 130 期高手问答中,我们策划的主题是“究竟什么才是微服务”,并邀请了黄勇作为高手嘉宾。 黄勇,现...

OSC源创君
2016/11/09
15.5K
29
阿里巴巴前架构师 360 度无死角剖析微服务

摘要: 阿里巴巴前架构师对于微服务毫无保留的分享,360 度无死角剖析微服务 微服务是当前软件架构领域非常热门的词汇,在社区中也有很多热烈的讨论。因此,在 OSC 第 130 期高手问答中,我们...

yuanzhitang
2016/11/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

09-利用思维导图梳理JavaSE-

09-利用思维导图梳理JavaSE-Java IO流 主要内容 1.Java IO概述 1.1.定义 1.2.输入流 - InputStream 1.3.输出流 - OutputStream 1.4.IO流的分类 1.5.字符流和字节流 2.InputStream类 2.1.File...

飞鱼说编程
15分钟前
1
0
Spring Cloud 微服务的那点事

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。 单体架构 在网站开发的前期,项目面临的流量相对较少,单一应用可以实现我们所需要的功能,从而减少开...

我是你大哥
25分钟前
1
0
步步深入MySQL:架构->查询执行流程->SQL解析顺序

一、前言 一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一篇博文了。 本文将从MySQL总体架构--->查询执行流程--->语句执行顺序来探讨一...

Java干货分享
39分钟前
1
0
gson1.7.1线程并发导致空指针问题

java.lang.NullPointerExceptionat com.google.gson.FieldAttributes.getAnnotationFromArray(FieldAttributes.java:231)at com.google.gson.FieldAttributes.getAnnotation(FieldAttribut......

东风125
今天
3
0
以太坊RPC接口使用

以太坊RPC接口文档: https://github.com/ethereum/wiki/wiki/JSON-RPC#web3_clientversion 使用方式: 比如我要调用某个合约的balanceOf(address _owner)方法。 因为没有改变合约的状态,所以...

王坤charlie
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部