infoq读书笔记-Davide Taibi博士-花8年转型微服务却得不到回报,问题出在哪 儿?

news2025/1/8 17:16:40

InfoQ:您的论文“On the Definition of Microservice Bad Smells”涉及非常多的微服务不良做法,但如果要用几个大类别来列举危害性比较大的微服务反模式,您认为会是哪几类?另外,您能再大概分析说明下造成这个几个反模式的原因吗?
在这里插入图片描述

Davide Taibi:就我个人而言,最坑的反模式存在于组织中,而非技术之罪。技术上的反模式很容易修复(如,循环依赖),而解决组织上的问题没那么简单。比如,错误的开发团队分组将团队按水平功能划分而不是垂直划分(分成数据库团队、前端团队、后台团队)。
另一种组织结构问题可被称为“微服务贪心(Microservice Greedy)”,指的是开发者对于任何可能的功能都创建新的微服务。他们都没有查看是否能重用代码,甚至确认这个功能是不是已经存在就开始实现了。结果就导致微服务数量暴涨,结构迅速退化, 维护的复杂度和成本也随之激增。


InfoQ:对于当前并不确定是否要选择云原生架构的企业,您有哪些建议?
Davide Taibi:我给一些还不确定时候应用云原生架构的企业的建议是,真实考量
你的需求,你的组织结构,以及公司开发者的经验。
如果有庞大数量的开发团队致力于不同的系统功能,你可以考虑微服务。如果有些
功能你需要极限可扩展性,那么你可以考虑无服务方法。其他的情形都需要准确地考量。
考虑到架构迁移的成本和影响,雇佣有经验的咨询顾问是很明智的。他们会提供一
个“外来人”的视角在作出重要决定之前对企业和系统进行合理评估。


InfoQ:最近谷歌开源了Service Weaver,谷歌称此框架为模块化单体(modular monolith),称其能兼顾单体应用的开发速度,以及微服务的可扩展性、安全性和容错性。但有人认为这就是一种“分布式单体”。您能解析对比分布式单体与模块化单体 之间的异同吗?
Davide Taibi:在我看来,“分布式单体”只是对于“维护不了的分布式系统”的一种误导性的称呼。
我坚决同意一个设计优良具有模块化功能的单体系统维护起来可以很简单。但主要的问题不是软件本身而在于组织结构。过大的组织结构将导致团队缺少独立部署的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1693129.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《计算机网络微课堂》1-2:因特网概述

1-2:因特网概述 网络、互连网(互联网)和因特网因特网发展的三个阶段因特网的标准化工作因特网的组成 ‍ 网络、互连网(互联网)和因特网 我们首先介绍网络、互联网(互连网)因特网的基本概念&a…

c语言——宏offsetof

1.介绍 !!! offsetof 是一个宏 2.使用举例 结构体章节的计算结构体占多少字节需要先掌握(本人博客结构体篇章中已经讲解过) 计算结构体中某变量相对于首地址的偏移,并给出说明 首先,结构体首个…

MyBatis常见报错:org.apache.ibatis.binding.BindingException

哈喽,大家好,我是木头左! 异常现象描述 当开发者在使用MyBatis进行数据库操作时,可能会遇到org.apache.ibatis.binding.BindingException: Parameter appId not found这样的错误提示。这个错误通常会让程序无法正常运行&#xff…

如何在华为手机上恢复已删除的视频[4种解决方案]

概括 在数字媒体时代,智能手机已成为我们的个人金库,存储以视频形式捕捉的珍贵记忆。然而,意外删除这些珍贵的文件可能会是一次令人心痛的经历。对于华为手机用户来说,由于删除或其他意外导致视频丢失尤其令人痛苦。但不用担心&a…

cadence23---PCB Editer 学习笔记

1.交互式布局 在Orcad中点击图标N生成第一网表: 在PCB Editer中导入第一网表, 之后点击移动命令并在右侧属性框中勾选Symbol选项卡: 设置--应用模式--点击常规编辑: 之后就可以进行交互式选择了。 绿色图标为打开全部飞线&#…

【Spring Security + OAuth2】OAuth2

Spring Security OAuth2 第一章 Spring Security 快速入门 第二章 Spring Security 自定义配置 第三章 Spring Security 前后端分离配置 第四章 Spring Security 身份认证 第五章 Spring Security 授权 第六章 OAuth2 文章目录 Spring Security OAuth21、OAuth2简介1.1、OAu…

力扣:92. 反转链表 II(Java)

目录 题目描述&#xff1a;示例 1&#xff1a;示例 2&#xff1a;代码实现&#xff1a; 题目描述&#xff1a; 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的…

刷代码随想录有感(78):回溯算法——关于树枝/树层去重的思考(涉及break/continue的使用)

在复原IP地址中&#xff0c;剪枝操作我们使用的是break: if(isvalid(s, start, i)){s.insert(s.begin() i 1, .);pointNum;backtracking(s, i 2, pointNum);s.erase(s.begin() i 1);pointNum--; }else break;在其他情况&#xff0c;举个例子&#xff0c;在含有重复元素求…

WiFi蓝牙模块开发配置过程中需要注意的细节

在很多产品的应用场景中&#xff0c;WIFI网络会给我们提供很多便捷&#xff0c;MCU开发中大多使用串口WIFI蓝牙模块来实现产品接入WIFI网络中。   具体的使用模型如下图所示&#xff1a;整个系统涉及到WIFI网络、手机、服务器平台以及我们设计的产品&#xff0c;一个完整的生…

第十一课,end关键字、简单while循环嵌套、初识for循环

一&#xff0c;end关键字 end关键字用于在print输出的内容后面声明结束的字符&#xff0c;我们之前学过并且十分了解print是默认输出内容之后跟着换行的&#xff0c;如果我们不希望换行而希望使用其它字符来代替换行&#xff0c;就可以用end关键字来实现 特殊的&#xff0c;en…

使用elementUI的form表单校验时,错误提示位置异常解决方法

问题 最近在做项目时遇到一个问题&#xff0c;使用elementUI的Descriptions 描述列表与form表单校验时&#xff0c;遇到校验信息显示的位置不对&#xff0c;效果如图&#xff1a; 期望显示在表格中。 效果 代码 html <el-form :model"form":rules"rules…

原始字面常量(C++11)

原始字面常量&#xff08;C11&#xff09; 文章目录 原始字面常量&#xff08;C11&#xff09;前言一、原始字面量二、代码示例总结 前言 字面量一般是指数值&#xff08;12、454等&#xff09;和字符串&#xff08;“Hw”、“h\t”&#xff09;&#xff0c;但是有时候我们想表…

用栈实现队列(C语言)

目录 题目题目分析 代码栈的实现结构体。栈的初始化栈的销毁 入栈删除查找顶部数据判空 答案结构体初始化插入数据删除数据获取队列开头元素判空销毁栈 题目 题目分析 链接: 题目 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、po…

MyBatis 学习笔记(一)

MyBatis 封装 JDBC :连接、访问、操作数据库中的数据 MyBatis 是一个持久层框架。 MyBatis 提供的持久层框架包括 SQLMaps 和 Data Access Objects&#xff08;DAO&#xff09; SQLMaps&#xff1a;数据库中的数据和 Java数据的一个映射关系 封装 JDBC 的过程Data Access Ob…

使用xxl-job-executor-go 接入xxl-job实现定时任务调度

定时任务是软件开发中很常见的一种处理业务的机制&#xff0c;xxl-job是近些年比较火的定时任务调用组件&#xff0c;其采用java 实现&#xff0c;是一个高可用&#xff0c;分布式调用的组件&#xff0c;还支持多种定时任务有关的特性&#xff0c;不仅能轻易的用java 客户端接入…

ChatGPT可以开车吗?分享大型语言模型在自动驾驶方面的应用案例

自动驾驶边缘案例需要复杂的、类似人类的推理&#xff0c;远远超出传统的算法和人工智能模型。而大型语言模型正在致力实现这一目标。 人工智能技术如今正在快速发展和应用&#xff0c;人工智能模型也是如此。拥有100亿个参数的通用模型的性能正在碾压拥有5000万个参数的任务特…

Pytorch-01 框架简介

智能框架概述 人工智能框架是一种软件工具&#xff0c;用于帮助开发人员构建和训练人工智能模型。这些框架提供了各种功能&#xff0c;如定义神经网络结构、优化算法、自动求导等&#xff0c;使得开发人员可以更轻松地实现各种人工智能任务。通过使用人工智能框架&#xff0c;…

【云原生】用 Helm 来简化 K8s 应用管理

用 Helm 来简化 K8s 应用管理 1.诞生背景2.主要功能3.相关概念4.工作原理5.架构演变6.Helm 常用命令7.推荐仓库8.Charts8.1 目录结构8.2 构建一个无状态应用模版 charts Helm 对于 Kubernetes 来说就相当于 Yum 对于 Centos 来说&#xff0c;如果没有 Yum 的话&#xff0c;我们…

SpringBoot实现邮箱验证码

自行创建一个SpringBoot项目 导入SpringBoot所需要的邮箱验证码的包 <!--邮件发送--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId><version>2.6.1</version>…