最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

微服务和软件开发目标

  • 2015-03-12
  • 本文字数:1092 字

    阅读完需:约 4 分钟

Dan North QCon 伦敦大会的演讲中说,软件的目标就是持续地使筹建时间减至最少以产生积极的商业影响,其他事情都是具体细节。他描述了有关代码推理的方法及其如何适应于微服务架构风格。

对IT 业思想先驱North 来说,软件开发的目标就是创造商业影响,这里引用了Gojko Adzic 在其著作《影响地图》中的流行语。商业影响在组织的内部(比如新客户)或者降低运营成本的效果是可见的。软件开发的目标是实现这一商业影响,或者更具体地最小化筹建时间,即从发现商机到完成解决方案的时间。这样做上几次是容易的,难在持续这样做,这推导出North 前述的软件开发的目标。

North 将代码分为三类,一种是你最新写的并且很熟悉;一种是 North 称其为 fabric 的、每个人都熟悉、代码附有充分的测试和文档;一种是没人熟悉的,依赖不明确且牵一发而动全身。对 North 而言,软件开发中最大的问题是第三类代码,没有人熟悉代表着成本和争端。从 North 的观点得出,代码要么稳定要么干掉,永远不要使其成为第三类,未知的代码。因而,North 搬出了几个模式来支持这一观点并将其引入到微服务之中。

第一种模式是短软件半衰期,参照物理学和不稳定原子衰变之快。North 相信代码应该有一个非常短的软件半衰期,以突显目标明确的代码最重要的是可以被推导的、可以存意使其稳定或将其废弃。他强调,理解的代码的目的是非常重要的。

第二种模式是如我所想(fits in my head),这是引自 James Lewis 的表达。这种模式是关于推理代码能力的;推理大系统的一种方法是将其分解,另一种方法是简化问题或者忽略大的部分而每次关注一个小的特定部分。同样的原理可以用于不同规模上的推理,如何定义一个方法的功能、如何建模一项工程、如何建模通信机制等等。

North 从他的推理中定义了一种架构风格,他称其为可替换的组件架构,通过上下文一致可以很好地将短期软件半衰期和如我所想两种模式结合在一起。所有的组件都是完全可以替换的,它们包装在隐藏内部细节的 API 中,并通过发送消息相互通信。这些组件就像微小的电脑一样传递信息,North 强调了 30 年前 Alan Kay 是如何定义的面向对象(OO)编程的。

微服务可作为一种可替换的组件架构,当优化替换性和一致性时,这两块儿都可以作出每日选择。North 认为使用微服务存在一个概念上的错误,微意味着更小并不总是最好的,更应该是可替换的更好。

查看英文原文: http://www.infoq.com/news/2015/03/microservices-software


感谢丁晓昀对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-12 00:571891

评论

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

v03.06 鸿蒙内核源码分析(时钟任务) | 触发调度谁的贡献最大 | 百篇博客分析HarmonyOS源码

鸿蒙研究站

鸿蒙内核源码分析 百篇博客分析鸿蒙

看亚马逊云科技如何助力英国教育科技公司 Firefly 快速落地中国|精选案例

亚马逊云科技 (Amazon Web Services)

XDPool比特兄弟矿场系统开发|XDPool比特兄弟矿场APP软件开发

引荐好友成为推广者还能拿额外奖励?!华为云引荐奖励计划来啦!

华为云开发者联盟

文章 返现奖励 推广计划 返利 团长

微服务化转型,拆就行了?这样做很危险...

BoCloud博云

微服务

精选Hadoop高频面试题17道,附答案详细解析

五分钟学大数据

大数据 hadoop 5月日更

零基础学习 NLP-DAY4 - 恶补Python - 基础1

Qien Z.

Python nlp 5月日更

HashMap

ltc

hashmap

antd table input 失焦的问题

blueju

如何从一段视频中一次性修整多个片段

奈奈的杂社

视频剪辑 视频后期 视频处理

博睿数据携手阿里云,打造以用户为中心的智能运维生态

博睿数据

阿里云 智能运维 博睿数据

2021年4月云主机性能评测报告新鲜出炉,盛大云华东蝉联冠军!

博睿数据

NAT穿透原理详解

IT酷盖

音视频 p2p NAT

差点败北,蚂蚁金服的六轮面试我是怎么撑过来的?(Java岗)

Java架构师迁哥

看Amazon Graviton 如何实现优化性能、降低工作负载成本!

亚马逊云科技 (Amazon Web Services)

【案例】星环科技原厂数据备份恢复软件,让大数据与AI应用有备无患

星环科技

兄弟矿场系统开发|兄弟矿场软件APP开发

apm应用性能管理,非科班程序员求职经历分享,看这一篇就够了

欢喜学安卓

android 程序员 面试 移动开发

打破思维定式(八)

Changing Lin

NetWebCore实现文件上传功能

happlyfox

学习 .net core 5月日更

Android屏幕适配,音视频学习指南来咯,文末领取面试资料

欢喜学安卓

android 程序员 面试 移动开发

HTML回流与重绘

空城机

JavaScript html 大前端 5月日更

Web渗透测试:信息收集篇

Thrash

【实战问题】-- 布隆过滤器的三种实践:手写,Redission以及Guava(2)

秦怀杂货店

Java 布隆过滤器

交通流量预测,EasyDL带你零代码实战

百度大脑

零代码 EasyDL

数据产品经理的圣经,送你一份真贵的礼物 ~~ 年度数据产品经理们的总结

松子(李博源)

大数据 数据产品经理 数据产品

一文掌握 Java8 Stream 中 Collectors 的 24 个操作

看山

Java

一举拿下贪心算法

Simon郎

Java 大数据 算法 LeetCode 数据结构与算法

hive的主流文件存储格式对比实验

大数据技术指南

大数据 hive 5月日更

这是我金三银四收到的第6个Offer:美团+阿里Java研发岗

Java 程序员 架构 面试

Iceberg0.11与Spark3.0结合

InfoQ_Springup

iceberg

微服务和软件开发目标_语言 & 开发_Jan Stenberg_InfoQ精选文章