「应用架构」应用程序架构的当前趋势

简介: 「应用架构」应用程序架构的当前趋势

本文有些不是最最新的,但是方法和思路也有借鉴意义,稍后会介绍Gantner的最新应用架构趋势。

应用架构概述

随着各种力量(云、移动、社交和大数据)的相互联系不断涌现,不利用这些力量的组织在未来将面临严重的业务劣势。

架构师应该考虑适应这些新趋势

  • 使用面向服务架构(service-oriented architecture,SOA),包含微服务(MSA),构建应用程序,并集成内部商用现货(COTS)和遗留应用程序,以及业务合作伙伴应用程序和云服务。
  • 利用SOA在具有不同预算、计划、需求和所有者优先级的应用程序和服务之间提供松耦合连接的能力。
  • 使用SOA的关注点分离和封装,将移动、社交和云数据源与可变的结构化和非结构化数据模型集成。
  • 利用松散耦合最为关键的事件驱动架构(EDA)。
  • 确保开发工作更加敏捷和渐进。
  • 考虑通过开源产品、开放标准和开放数据利用开放计算。
  • 遵循大型网站的最佳实践和先例;寻找使用内存计算以及基于最终一致性模型的事务处理的机会

下面是显示应用程序架构议程的图表



图1

摆脱三层架构

应用程序体系结构的分层方法的问题在于它只在一个维度中定义应用程序(图2)。所有不同的数据源都在底层。所有用户界面(UI)逻辑都在顶层。而且,应用程序的其余部分介于两者之间。自上而下。自下而上。直线。一维的



图2

今天的客户端应用程序必须支持在一系列不同的“客户端”设备上运行的各种UI,包括PC、上网本、平板电脑、智能手机、信息亭、汽车仪表盘、GPS设备和媒体播放器。名单很长,而且还在继续增长。这些应用程序经常被调用来支持来自其他系统的访问,如社交计算站点、业务合作伙伴应用程序、媒体公司站点和业务部门IT提供的mashup(图3)。在这种情况下,单个客户端程序将清楚地调用应用程序的业务逻辑的概念是很奇怪的。



图3

我们现在在应用程序的访问端和数据管理端都有多个维度。许多新应用程序中的业务逻辑由一个或多个组合服务组成,这些组合服务依赖于多个子服务来执行业务逻辑。在某些情况下,这些多个服务在内部运行,但有时应用程序必须访问合作伙伴或供应商提供的服务,或者这些服务可以托管在云中。



图4

鉴于这些关于现实世界应用程序复杂性的观察,我们可以通过注意充分描述的应用程序架构来总结,应该假设许多客户端程序和设备访问许多业务逻辑服务,而这些服务反过来又访问其他业务逻辑服务,以及多个数据访问/数据管理服务。



图5

放弃过时的应用程序架构假设

应用程序设计人员一直在基于长期以来的假设来设计他们的应用程序。其中一些假设与移动、社交、云计算和新信息管理的交叉带来的新范式相冲突。有必要抛弃这些假设,以便能够容纳各种力量(云、社交、移动和信息)的联系。

  • 放弃应用程序可能依赖于环境同质性的假设。设计系统,假设它们运行在高度动态基础设施上的混合云环境中。
  • 放弃应用程序将存在于单个位置的假设。构建这样的应用程序:流程和数据可以分布在多个位置,而辖区分割是设计的一部分。
  • 放弃使用数据库强制流程完整性的假设。相反,创建具有完整性意识的应用程序并管理业务成果。
  • 放弃关于应用程序使用结构化数据的假设。相反,应用程序必须容纳不同的媒体类型和用于类似目的的多个数据类型。
  • 放弃“记录器”模式假设。相反,应该围绕人际和社会沟通来设计应用程序。

接受应用程序范例和模型

术语“应用程序架构”是指应用程序的结构和组织,包括其组件以及它们之间的交互/相互依赖模型。应用程序架构师应用架构范例,并使用常见的模式和模型来设计应用程序并定义其架构。

最直接受体系结构影响的应用程序特性包括

  • 1] 可维护性
  • 2] 稳健性
  • 3] 多才多艺
  • 4] 可用性
  • 5] 寿命

为了更好地理解如何使用应用程序体系结构来交付具有这些特性的应用程序,考虑体系结构的三个组件是很有帮助的:

  • 范式
  • 模型
  • 结构和组织

范例:

架构范例(有时称为架构样式)是一个总体概念框架,它影响您设计应用程序的方式。一个范例有助于确保应用程序展示最能满足应用程序所有者目标的特性。

模型

模型是对现实世界某些方面的抽象描述和符号规范。模型通过将复杂性抽象为系统最可见方面的高级表示,帮助人们理解复杂的系统。然后,设计人员、开发人员和系统涉众在逐步深入到系统的细粒度方面时创建更详细的模型,以便更好地理解系统组件的功能性和非功能性功能及其相互依赖性。

解决方案架构师为系统的四个相关方面建模:

  • 业务能力模型指定了组织需要能够做的事情
  • 业务流程模型指定组织如何完成任务
  • 信息模型指定组织使用、处理或创建的信息
  • 服务模型指定执行工作的软件组件

结构和组织

应用程序的架构反映在其实现的结构和组织中。这些架构特性影响应用程序的性能、可伸缩性、健壮性、灵活性、可维护性和总体拥有成本。

要确定应用程序的体系结构质量,请考虑其结构和组织的以下方面:

  • 其服务和组合的分解和粒度
  • 用于定义和描述解决方案的拓扑
  • 解决方案组件的相互依赖性
  • 接口说明和合同
  • 定义或利用的框架
  • 实施
相关文章
|
8天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
13天前
|
运维 Kubernetes Docker
深入理解容器化技术及其在微服务架构中的应用
深入理解容器化技术及其在微服务架构中的应用
29 1
|
13天前
|
Cloud Native 安全 持续交付
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
29 1
|
14天前
|
监控 持续交付 API
深入理解微服务架构及其在现代应用开发中的应用
深入理解微服务架构及其在现代应用开发中的应用
21 0
|
15天前
|
边缘计算 监控 自动驾驶
揭秘云计算中的边缘计算:架构、优势及应用场景
揭秘云计算中的边缘计算:架构、优势及应用场景
|
15天前
|
存储 监控 API
深入解析微服务架构及其在现代应用中的实践
深入解析微服务架构及其在现代应用中的实践
25 0
|
15天前
|
监控 物联网 持续交付
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
22 0
|
26天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
7天前
|
弹性计算 API 持续交付
后端服务架构的微服务化转型
本文旨在探讨后端服务从单体架构向微服务架构转型的过程,分析微服务架构的优势和面临的挑战。文章首先介绍单体架构的局限性,然后详细阐述微服务架构的核心概念及其在现代软件开发中的应用。通过对比两种架构,指出微服务化转型的必要性和实施策略。最后,讨论了微服务架构实施过程中可能遇到的问题及解决方案。
|
24天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####