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

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

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

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

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

范例:

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

模型

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

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

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

结构和组织

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

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

  • 其服务和组合的分解和粒度
  • 用于定义和描述解决方案的拓扑
  • 解决方案组件的相互依赖性
  • 接口说明和合同
  • 定义或利用的框架
  • 实施
相关文章
|
16天前
|
监控 Go API
Go语言在微服务架构中的应用实践
在微服务架构的浪潮中,Go语言以其简洁、高效和并发处理能力脱颖而出,成为构建微服务的理想选择。本文将探讨Go语言在微服务架构中的应用实践,包括Go语言的特性如何适应微服务架构的需求,以及在实际开发中如何利用Go语言的特性来提高服务的性能和可维护性。我们将通过一个具体的案例分析,展示Go语言在微服务开发中的优势,并讨论在实际应用中可能遇到的挑战和解决方案。
|
17天前
|
网络协议 数据挖掘 5G
适用于金融和交易应用的低延迟网络:技术、架构与应用
适用于金融和交易应用的低延迟网络:技术、架构与应用
44 5
|
17天前
|
Go 数据处理 API
Go语言在微服务架构中的应用与优势
本文摘要采用问答形式,以期提供更直接的信息获取方式。 Q1: 为什么选择Go语言进行微服务开发? A1: Go语言的并发模型、简洁的语法和高效的编译速度使其成为微服务架构的理想选择。 Q2: Go语言在微服务架构中有哪些优势? A2: 主要优势包括高性能、高并发处理能力、简洁的代码和强大的标准库。 Q3: 文章将如何展示Go语言在微服务中的应用? A3: 通过对比其他语言和展示Go语言在实际项目中的应用案例,来说明其在微服务架构中的优势。
|
15天前
|
监控 持续交付 Docker
Docker 容器化部署在微服务架构中的应用有哪些?
Docker 容器化部署在微服务架构中的应用有哪些?
|
15天前
|
监控 持续交付 Docker
Docker容器化部署在微服务架构中的应用
Docker容器化部署在微服务架构中的应用
|
23天前
|
机器学习/深度学习 人工智能 自然语言处理
医疗行业的语音识别技术解析:AI多模态能力平台的应用与架构
AI多模态能力平台通过语音识别技术,实现实时转录医患对话,自动生成结构化数据,提高医疗效率。平台具备强大的环境降噪、语音分离及自然语言处理能力,支持与医院系统无缝集成,广泛应用于门诊记录、多学科会诊和急诊场景,显著提升工作效率和数据准确性。
|
4天前
|
监控 持续交付 API
深入理解微服务架构及其在现代软件开发中的应用
深入理解微服务架构及其在现代软件开发中的应用
11 0
|
15天前
|
缓存 负载均衡 JavaScript
探索微服务架构下的API网关模式
【10月更文挑战第37天】在微服务架构的海洋中,API网关犹如一座灯塔,指引着服务的航向。它不仅是客户端请求的集散地,更是后端微服务的守门人。本文将深入探讨API网关的设计哲学、核心功能以及它在微服务生态中扮演的角色,同时通过实际代码示例,揭示如何实现一个高效、可靠的API网关。
|
14天前
|
Cloud Native 安全 数据安全/隐私保护
云原生架构下的微服务治理与挑战####
随着云计算技术的飞速发展,云原生架构以其高效、灵活、可扩展的特性成为现代企业IT架构的首选。本文聚焦于云原生环境下的微服务治理问题,探讨其在促进业务敏捷性的同时所面临的挑战及应对策略。通过分析微服务拆分、服务间通信、故障隔离与恢复等关键环节,本文旨在为读者提供一个关于如何在云原生环境中有效实施微服务治理的全面视角,助力企业在数字化转型的道路上稳健前行。 ####
|
14天前
|
Dubbo Java 应用服务中间件
服务架构的演进:从单体到微服务的探索之旅
随着企业业务的不断拓展和复杂度的提升,对软件系统架构的要求也日益严苛。传统的架构模式在应对现代业务场景时逐渐暴露出诸多局限性,于是服务架构开启了持续演变之路。从单体架构的简易便捷,到分布式架构的模块化解耦,再到微服务架构的精细化管理,企业对技术的选择变得至关重要,尤其是 Spring Cloud 和 Dubbo 等微服务技术的对比和应用,直接影响着项目的成败。 本篇文章会从服务架构的演进开始分析,探索从单体项目到微服务项目的演变过程。然后也会对目前常见的微服务技术进行对比,找到目前市面上所常用的技术给大家进行讲解。
32 1
服务架构的演进:从单体到微服务的探索之旅