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

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

本文有些不是最最新的,但是方法和思路也有借鉴意义,稍后会介绍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] 寿命

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

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

范例:

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

模型

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

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

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

结构和组织

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

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

  • 其服务和组合的分解和粒度
  • 用于定义和描述解决方案的拓扑
  • 解决方案组件的相互依赖性
  • 接口说明和合同
  • 定义或利用的框架
  • 实施
相关文章
|
20天前
|
机器学习/深度学习 API 语音技术
|
4天前
|
设计模式 Java API
Java 可扩展 API 设计:打造灵活的应用架构
【4月更文挑战第27天】设计可扩展的 API 是构建灵活、易于维护的应用程序架构的关键。Java 提供了丰富的工具和技术来实现这一目标,使开发者能够构建具有高度可扩展性的应用程序。
20 4
|
1天前
|
前端开发 JavaScript 安全
【TypeScript技术专栏】TypeScript在微前端架构中的应用
【4月更文挑战第30天】微前端架构通过拆分应用提升开发效率和降低维护成本,TypeScript作为静态类型语言,以其类型安全、代码智能提示和重构支持强化这一架构。在实践中,TypeScript定义公共接口确保跨微前端通信一致性,用于编写微前端以保证代码质量,且能无缝集成到构建流程中。在微前端架构中,TypeScript是保障正确性和可维护性的有力工具。
|
2天前
|
Cloud Native Devops 持续交付
构建未来应用:云原生架构在现代企业中的实践与挑战
【4月更文挑战第29天】 随着数字化转型的加速,企业正迅速转向云计算以支撑其业务敏捷性和创新。云原生技术,作为推动这一转型的关键因素,正在重新定义软件开发和运维模式。本文将深入探讨云原生架构的核心组件,包括容器化、微服务、持续集成/持续部署(CI/CD)以及DevOps文化,并分析这些技术如何帮助企业实现弹性、可扩展和高效的应用部署。同时,我们将讨论在采纳云原生实践中所面临的挑战,包括安全性、治理和人才缺口等问题。
|
2天前
|
运维 Cloud Native Devops
构建未来应用:云原生架构的演进与实践
【4月更文挑战第29天】在数字化转型的浪潮中,企业亟需灵活、高效的技术支撑来应对市场的快速变化。云原生架构以其独特的设计理念和技术栈,成为推动这一变革的关键力量。本文深入探讨了云原生的核心概念、关键技术和实施策略,旨在为企业提供一个清晰的云原生转型蓝图,助力其构建更加动态、可扩展的应用系统。
|
6天前
|
JSON API 数据库
后端架构设计与优化:打造高性能应用后端
后端架构设计与优化:打造高性能应用后端
20 2
|
10天前
|
设计模式 前端开发 数据库
构建高效Android应用:使用Jetpack架构组件实现MVVM模式
【4月更文挑战第21天】 在移动开发领域,构建一个既健壮又易于维护的Android应用是每个开发者的目标。随着项目复杂度的增加,传统的MVP或MVC架构往往难以应对快速变化的市场需求和复杂的业务逻辑。本文将探讨如何利用Android Jetpack中的架构组件来实施MVVM(Model-View-ViewModel)设计模式,旨在提供一个更加模块化、可测试且易于管理的代码结构。通过具体案例分析,我们将展示如何使用LiveData, ViewModel, 和Repository来实现界面与业务逻辑的分离,以及如何利用Room数据库进行持久化存储。最终,你将获得一个响应迅速、可扩展且符合现代软件工
14 0
|
13天前
|
机器学习/深度学习 语音技术 网络架构
【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享
【视频】LSTM神经网络架构和原理及其在Python中的预测应用|数据分享
23 0
|
15天前
|
人工智能 Serverless 数据处理
利用阿里云函数计算实现 Serverless 架构的应用
阿里云函数计算是事件驱动的Serverless服务,免服务器管理,自动扩展资源。它降低了基础设施成本,提高了开发效率,支持Web应用、数据处理、AI和定时任务等多种场景。通过实例展示了如何用Python实现图片压缩应用,通过OSS触发函数自动执行。阿里云函数计算在云计算时代助力企业实现快速迭代和高效运营。
48 0
|
18天前
|
运维 监控 自动驾驶
构建可扩展的应用程序:Apollo与微服务架构的完美结合
构建可扩展的应用程序:Apollo与微服务架构的完美结合
34 10