写点什么

微服务和软件开发目标

  • 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:572103

评论

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

算法题学习---链表反转

桑榆

c++ 算法题 10月月更

MySQL超详细安装教程 手把手教你安装MySQL到使用MySQL 最简单的MySQL安装方式,这种方式装,卸载也简单(零基础入门MySQL)

Python-派大星

10月月更

技术翻译之我见——标准、实操与收益

刘华Kenneth

翻译 图数据库

ES6中数组做了哪些新扩展?

CoderBin

JavaScript 面试 前端 ES6 10月月更

离职交接,心态要好

程序人生 职场

“程”风破浪的开发者|我的学习方法

张立梵

学习方法 “程”风破浪的开发者

Java线程池源码深度解析

JAVA旭阳

Java 线程池 10月月更

【愚公系列】2022年10月 Go教学课程 037-面向对象综合案例-微博

愚公搬代码

10月月更

VLAN原理和配置,交换机创建vlan的多种方法、三种接口模式的作用和配置方法、Access、Trunk、Hybrid接口的特性以及配置方法和命令

Python-派大星

10月月更

Vmware虚拟机上CentOS8安装教程

DS小龙哥

10月月更

Vue组件入门(十三)作用域插槽

Augus

Vue 10月月更

嘉宾预告(一) | 安全左中右 · 2022 XDR网络安全运营新理念峰会

未来智安XDR SEC

网络安全

从项目制到产品制,日子变美好了吗?

刘华Kenneth

DevOps 敏捷 软件项目

Linux下安装Anaconda3,这个教程一定要看!

麦洛

Anaconda python 3.5+

Spring Boot「12」自定义 starter

Samson

Java spring 学习笔记 spring-boot 10月月更

Eclipse 2022 如何设置中文汉化 步骤绝对足够详细

Geek_yx5md7

eclipse 汉化教程

两类常见场景下的云原生网关迁移实践

阿里巴巴云原生

阿里云 云原生网关

复盘:一次测试负责人岗位面试总结

老张

面试 质量保障 团队规划

Java线程池submit阻塞获取结果实现原理

JAVA旭阳

Java 线程池 10月月更

嵌入式 Linux 入门(三、Linux Shell 及常用命令说明)

矜辰所致

Linux Shell 10月月更 Shell命令

教你如何使用华为云的DLV平台搭建无人机飞行轨迹大屏,教科书级别的文章,非常详细

wljslmz

物联网 无人机 数据可视化 10月月更 智慧大屏

“程”风破浪的开发者|我的Docker学习小妙招

学习方法 “程”风破浪的开发者

【JavaWeb】 Mybatis-01-Mybatis的简介:用对话的方式让你明白为什么要使用Mybatis

游坦之

10月月更

同情是对他人的不尊重

欧阳娜

eBPF深度探索: 高效DNS监控实现

俞凡

ebpf

云计算 Fusion Compute虚拟机挂载Tools 并给虚拟机配置静态IP

Python-派大星

10月月更

今年很难被薪资倒挂了!

小小怪下士

Java 程序员

docker 的 bridge,container网络模式

忙着长大#

,docker

“程”风破浪的开发者|元宇宙就是游戏吗?元宇宙的核心价值是什么?

王中阳Go

学习 深度思考 程序员 元宇宙 “程”风破浪的开发者

架构作业3-外包学生管理系统架构文档

许四多

直接插入排序算法,看这篇就够了

游坦之

算法 10月月更

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