0%

微服务架构(一)——概述

随着软件的复杂度的爆发式增长与多人协作带来的效率问题,以及管理和技术方面的各种不确定性爆发式增加。人们发展出了项目研发过程管理来控制管理活动中的不确定性,同时发展出了软件架构涉及方法来控制技术方面的不确定性,最大程度的保障了软件的质量,开发周期和成本。

架构的定义

“架构”一词来源于建筑领域,维基百科的解释为:规范,涉及和建造建筑物的过程及产物。在引入计算机领域后,软件架构就成为描述软件规划涉及技术的专有名词。软件架构师一词在英语和建筑师是同一个单词(Architect)。

维基百科定义如下:

软件架构是有关软件整体结构与组建件的抽象描述,用于指导大型软件系统各个方面的涉及。软件架构师定义和涉及软件的模块化、模块之间的交互、用户界面风格、对外接口办法、创新的涉及特性,以及高层事物的对象操作、逻辑和流程。软件架构是一个系统的草图。软件架构描述的对象是直接构成系统的抽象组件。各个组件之间的连接则明确和相对细致地描述组件之间的通信。在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或对象。在面向对象领域中,组件之间的连接通常用接口实现。

Kruchten认为:

架构是对软件系统组织、结构部分和系统包含接口的选择,满足功能和性能需求的一系列架构元素的集合。软件架构设计与软件高层次结构的实现能够抽象、分解、组合等。

Bass等人认为:

系统或计算系统的软件架构是包含软件部分,外部可见特性部分,以及它们之间关系的系统结构。

McGovern认为:

软件架构或系统由组成系统的结构的相互作用和软件结构的重要设计决定组成。设计决定应成功实现所期望支持的质量。设计决定为系统开发、支持和维护提供概念上的基础。

公认的定义如下:

  1. 架构过程:在系统整个生命周期中构思,定义,表达,记录,交流,验证和实现,维护和改进架构的过程,也就是设计过程。
  2. 架构:一个系统体现在其环境中的元素、关系的基本概念或属性,以及其设计和进化原则。
  3. 架构描述:表达一个架构的工作产出物(通常指的是各个架构图和设计文档)
  4. 架构视图: