写点什么

来自微服务实践受挫后的一些经验

2014 年 8 月 13 日

虽然微服务 microservices )是一种有关服务的设计和构成的正确理念,但是它很快会给你带来麻烦。 Richard Clayton 撰写了一篇文章,该文章讲述了他在实现和维护一个微服务架构中所遭遇的挫折,以及他在该过程中的观察和学习到的经验。

Richard 是 Berico Technologies 公司的首席软件工程师,他强调他的团队虽然在开发微服务的过程中遭受了挫折,但是大部分的原因都与技术和实现的具体实践无关。在这个项目过程中,Richard 找出了他认为造成这些挫折的五个主要原因。

开发者之间意见不同

在对微服务架构与一个更加传统的单片架构的利弊权衡问题上,团队中成员的观点并不一致,加上原本鼓励决策民主化,导致团队在无谓的争论中花费了大量的时间,同时带来了成员之间感情上的摩擦。而部分缺乏能力的开发者引入了大量存在缺陷的实现,同样也降低了团队的生产力。

服务边界所产生的障碍

根据将服务分配到人的决策,我们把后端分解成了 8 个独立的服务,从而强行固化了特定服务与开发者的权责关系。这导致开发者一方面抱怨它们的服务开发进度受阻于其他服务的开发任务,而另一方面却又拒绝帮助别人一起完成这些阻碍了进度的任务。这种隔离方式,同样也让开发者忘记了整个系统的首要目标,而只顾自己专注于个人的服务开发工作之中。

独立的服务

选择在服务间共享公共通用代码还是选择采用具有重复功能的独立服务,成为了一个需要权衡的重要问题,因为这最终有可能会导致重大的重构。.

在为每个服务约定 API 这件事上让人非常受挫,尤其是需要在每个服务间传递的模型,这方面这将导致很多常见的问题,特别是面向前端开发者时,这个问题仍然没有很好的解决方案。

没有显式定义好服务间的通信方式,而在所有场景中都使用着同一套机制,但是这种方式工作得并不好。最终,团队开始尝试一种 CQRS 的的通信模式,而这项尝试还没有时间来完整实施。

服务的粒度

对团队来说,一开始就分解成 8 个服务的动作有些过大,或许拆成两个服务会是一个更好的开始,而最终再根据实际需求将这些服务分解到多个微服务中去。

DevOps

持续交付(CD)的管道实现方面,或许是团队做得最好的部分。团队在这方面花了大量的时间来学习大量的课程,例如:维护多个小服务所产生的负担。

Richards 就团队该如何开始微服务实践方面给出了一些建议,包括确认团队是否已经具备必要的技能、采用一种注重实效的方式以及适应团队和客户的能力。

查看英文原文: Experiences from Failing with Microservices

2014 年 8 月 13 日 02:561373
用户头像

发布了 52 篇内容, 共 19.8 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
发现更多内容

Spring知识点总结!已整理成142页离线文档(源码笔记+思维导图)

Java架构之路

Java spring 程序员 面试 编程语言

一分钟带你认识深度学习中的知识蒸馏

华为云开发者社区

学习

第2周

Geek_fabd84

从基础到实践,一文带你看懂HashMap

华为云开发者社区

Java hashmap

网站审核提不了款维护的解决方法有哪些?

丛林里的余光

网站平台

原来 8 张图,就可以搞懂「零拷贝」了

小林coding

Linux 计算机基础 高性能 零拷贝

是的,我去封闭开发了

lockdown56

生活,随想 工作哲学 摄影 摄影征文

记一次"截图"功能的项目调研过程!

云流

编程开发 程序员代码 项目实战 架构师技能

一大波人气博主袭来,现场直播华为全联接2020!

华为云开发者社区

开发者 华为云

解Bug之路-记一次对端机器宕机后的tcp行为

无毁的湖光

Linux TCP socket MQ Java 分布式

anyRTC无人机图传方案

anyRTC开发者

WebRTC 语音 直播 RTC 安卓

高难度对话读书笔记—情绪篇2

wo是一棵草

架构师训练营第二周作业

邓昀垚

大作业

李白

超越色彩的魅力:读《黑白适界》

北风

艺术 摄影 黑白 摄影征文 画册

可以秒杀全场的SpringCloud微服务电商实战项目,文档贼全

Java架构之路

Java 程序员 编程语言 架构师 项目实战

云图说 | 华为云应用服务网格,让你的应用治理智能化、可视化

华为云开发者社区

网络I

译文|简明指南:Apache Pulsar 的分层存储

Apache Pulsar

开源 云原生 存储分离 Apache Pulsar 消息中间件

九、给小白看的第二篇Python基础教程

刘润森

Python

快速了解前端开发HTML的正确姿势

华为云开发者社区

CSS html

学习编程

InfoQ_34a83d636158

Spring Cloud 微服务实践(4) - OAuth2

xiaoboey

微服务 Spring Cloud OAuth2 JWT

响应式编程到底是什么?

博文视点Broadview

Java 响应式 响应式编程 reactor 并发

架构师第一期作业(第二周)

Cheer

课程作业

架构师训练营第二周学习总结

邓昀垚

2020年9月编程语言排行榜TOP20:学习Java语言的前景

Java架构师迁哥

一张图揭秘在阿里、腾讯、美团工作的区别

Java架构师迁哥

第6周作业

方堃

Android Native crash处理案例分享

阿里云金融线TAM SRE专家服务团队

android

腾讯这份Java面试核心,开源半天就收到Git近10W点赞

小Q

Java 分布式 算法 JVM 多线程

Java多线程知识点总结(思维导图+源码笔记),已整理成PDF版文档

Java架构之路

Java 程序员 面试 编程语言 多线程

InfoQ 极客传媒开发者生态共创计划线上发布会

InfoQ 极客传媒开发者生态共创计划线上发布会

来自微服务实践受挫后的一些经验-InfoQ