Martin Fowler竟然不是第一个提出微服务架构概念的?

简介:

王磊:前ThoughtWorks首席咨询师,《微服务架构与实践》作者,翻译有《DevOps Handbook》,国内较早倡导和实践微服务的先行者,有丰富的微服务/DevOps/持续交付实战经验


微服务架构那点事

相信很多朋友了解微服务架构都是从Martin Fowler的那篇文章开始。而实际上,Martin却并不是最早谈及微服务架构的,本篇文章就和你聊聊微服务架构定义的那点事。

最易懂的版本

Martin Fowler的这篇文章《Microservices》通俗易懂的讲解了什么是微服务架构.


微服务架构是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相协作(通常是基于HTTP协议的RESTful API)。每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。

我在2015年4月QCon的《基于微服务架构,改造企业遗留系统的实践》演讲上,将这四个特性定义抽象为“小、独、轻、松”。最后一个字之所以定义成松,是为了读起来能朗朗上口。确切的讲,所代表的含义其实是服务具备独立的流水线,能够被独立的构建,并且被独立的部署。实际上,Martin Fowler并不是最早提出微服务架构概念的人。

最早期的版本

最早提出微服务架构概念的,是Fred George。他一位非常传奇的人物,从业40多年,接触过70+编程语言,就职过IBM、TW等多家公司,并在社区和大会上做过很多分享。后来成立独立的咨询公司,为金融、电信、保险、航空等多个行业提供敏捷、持续交付、DevOps等转型服务,他也是最早实践XP、Scrum、和看板的人之一.


在2012年3月的Agile India上,Fred George分享了题为

Micro (u)Services Architecture -small, short lived services rather than SOA.

的演讲。在演讲中,他描述了从2005~2009年期间,他和所在的团队是如何将100万行的传统J2EE程序,通过解耦、自动化验证等实践,逐渐分解成20多个5K行代码的小服务,又分解成200多个500行代码的服务的过程,而其中,也大谈了基于Kafka的消息解耦服务间依赖。我认为,这是对微服务定义的最早版本了。

最简洁的版本

Adrain Cockcroft,Netflix的云架构师,主导了Netflix从2009到2016年服务化拆分、从数据中心迁移到云平台、以及组织、流程、工具等的演进等.


他对微服务的定义是:

Loosely coupled service oriented architecture with bounded contexts.

其中两个核心点Loosely coupled 和 Bounded context。Loosely coupled表明,服务之间是松耦合的。什么叫松耦合?就是指服务能够被独立更新。如果不能被独立更新,那证明服务就不是松耦合的。Bounded context,源于DDD(领域驱动设计),表明对于服务而言,它的业务是独立的,我们不需要知道它的依赖者,根据接口就可以更新服务的代码。我认为,这是对微服务定义的最简洁版本了。

最与时俱进的版本

第三个版本,来自Neal Ford,他是TW的资深技术专家,《卓有成效的程序员》作者,也是TW技术雷达的发起者和维护者之一。


他对微服务架构的定义是

“Microservices are the first post DevOps revolution architecture.

这是第一次将微服务和DevOps紧密关联起来的版本。

实际上,DevOps作为一场开发与运维手拉手,心连心的运动,正在席卷着整个社区。DevOps所涵盖的一系列文化、实践以及自动化的理念(CALMS),是微服务演进过程中必不可少的先决条件。可以说,在传统的运维模式下,有效实现微服务架构几乎是不可能的,因为微服务的实施需要自动化基础设施、自动化部署、自动化验证、以及利用有效的工具完成运维、监控、告警等。而只有将DevOps与微服务紧密的结合起来,才能达到事半功倍的效果。

总结

如上就是我认为微服务演进过程中,最具有代表性的几个定义,当然,除了这3位大师,还有很多其他大师,譬如Sam Newman,James Lewis等发表的见解。

感兴趣的朋友可以继续挖掘一下,了解微服务架构演进过程中,大师们是如何看待微服务架构的。


来源:中生代技术

原文链接


相关文章
|
5月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
12月前
|
资源调度 监控 调度
基于SCA的软件无线电系统的概念与架构
软件通信体系架构(SCA)是基于软件定义无线电(SDR)思想构建的开放式、标准化和模块化平台,旨在通过软件实现通信功能的灵活配置。SCA起源于美军为解决“信息烟囱”问题而推出的联合战术无线电系统(JTRS),其核心目标是提升多军种联合作战通信能力。 上海介方信息公司的OpenSCA操作环境严格遵循SCA4.1/SRTF标准,支持高集成、嵌入式等场景,适用于军用通信、雷达等领域。 SCA体系包括目标平台资源层(TRL)、环境抽象层(EAL)、SRTF操作环境(OE)及应用层(AL)。其中,SRTF操作环境包含操作系统、运行时环境(RTE)和核心框架(CF),提供波形管理、资源调度等功能。
|
8月前
|
缓存 Cloud Native Java
Java 面试微服务架构与云原生技术实操内容及核心考点梳理 Java 面试
本内容涵盖Java面试核心技术实操,包括微服务架构(Spring Cloud Alibaba)、响应式编程(WebFlux)、容器化(Docker+K8s)、函数式编程、多级缓存、分库分表、链路追踪(Skywalking)等大厂高频考点,助你系统提升面试能力。
827 0
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
1625 70
从单体到微服务:如何借助 Spring Cloud 实现架构转型
|
11月前
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
577 12
|
运维 监控 持续交付
微服务架构解析:跨越传统架构的技术革命
微服务架构(Microservices Architecture)是一种软件架构风格,它将一个大型的单体应用拆分为多个小而独立的服务,每个服务都可以独立开发、部署和扩展。
3544 37
微服务架构解析:跨越传统架构的技术革命
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
410 18
|
传感器 监控 安全
智慧工地云平台的技术架构解析:微服务+Spring Cloud如何支撑海量数据?
慧工地解决方案依托AI、物联网和BIM技术,实现对施工现场的全方位、立体化管理。通过规范施工、减少安全隐患、节省人力、降低运营成本,提升工地管理的安全性、效率和精益度。该方案适用于大型建筑、基础设施、房地产开发等场景,具备微服务架构、大数据与AI分析、物联网设备联网、多端协同等创新点,推动建筑行业向数字化、智能化转型。未来将融合5G、区块链等技术,助力智慧城市建设。
660 1