【架构师】应用架构图

news2024/11/22 6:30:53

技术架构是应接应用架构的技术需求,并根据识别的技术需求,进行技术选项,把各个关键技术和技术之间的关系描述清楚。

基础结构解决的主要问题包括:如何进行技术层面的分层、开发框架的选择、开发语言的选择、涉及非功能性需求的技术选择。由于应用架构体系是分层的,那么对应的技术架构体系自然也是分层的。大的分层有微服务架构分层模型,小的则是单个应用的技术分层框架。大的技术体系考虑清楚后,剩下问题就是根据实际业务考虑选择具体的技术点。各个技术点的分析、方案选择,最终形成关键技术清单,关键技术清单应考虑架构本身的分层逻辑,最终形成一个完整的技术架构图。

简而言之,技术架构试讲产品需求转变为技术实现的过程。

单体应用架构

单体应用架构一般是比较传统的分为4层:数据层(Data Layer)、应用逻辑层(Business Layer)、表现层(Presentation Layer)和基础通用层(Common Layer)。

展现层

展现层是整个应用面向用户的入口,用户通过展现层实现与系统的交互。展现层为用户提供系统功能的操作、系统数据的展现。展现层按照面向的用户类型提供不同的交互服务。例如在业务场景中,用户有实操层用户、管理层用户、决策层用户。针对不同层级的用户,系统所提供的功能是不相同:

●面向实操层用户,提供的是对系统的操作功能,满足业务日常运营。往往更多的是执行具体操作。

●面向管理层用户,满足管理者的日常管理需求,通常提供经营数据、日常管理数据、团队业务数据等等。通过数据分析,改善日常运营的流程。

●面向决策层用户,这一层的用户不需要太细的数据,为其提供企业的经营诊断数据和报告,辅助决策支持。

业务层

业务层是应用为解决业务需求,按照产品架构中的功能模块进行细化。业务层是对将产品层从粗到细的分解过程。这个过程是对业务的细化过程,把项目要交付的模块细分到最基本的单元。最基本单元是实现日常业务操作的最细粒度的功能点。由此,我们能够得到实现业务逻辑的全功能结构。

数据层

数据层按照应用的数据模型分别进行存储。这里的存储介质包含关系型数据库、NoSQL、分布式文件系统。

基础层

通用基础层是为系统提供通用能力的中间件,比如流程引擎、消息中间件、缓存、搜索引擎等等。这些中间件和业务是无相关性的,提供的是通用的基础技术能力。

基于上述分析,我们可以得到一个如下单体应用的技术架构:

分布式应用架构

分布式应用架构图实质是产品内部所有应用在分布式环境下的调用关系图。各应用间通过服务的形式相互调用,这是典型的 SOA 架构。在应用架构图中,SOA 架构中的服务注册、服务治理、服务发现这些 RPC 框架的基础平台功能不用在应用架构中体现。

应用架构图的重点是体现应用之间的逻辑关系和通信关系,体现产品的内部关系和外部关系。内部关系是产品内各应用的调用关系;外部关系展现的是产品与外部系统间的调用关系。将应用的内外关系呈现在应用架构中,产品在整个业务中的定位和影响将变得清晰。

应用间调用关系

在产品内部的各子系统之间,为了解决业务需求,通过应用之间的服务调用或者异步消息调用产生数据关系。通过产品架构图中得到的应用系统划分,按照系统间的调用关系,形成内部应用的集成架构图。在应用集成架构图中,需要标注调用链路中的业务含义,清楚的标注应用之间发生的业务关系。

外部系统调用关系

数据输入做为产品的业务数据来源,很大部分是外部系统提供。在应用架构图中,按照业务属性、来源关系进行对外部系统进行归类,并将外部的来源系统纳入整个应用架构中。我们知道计算机系统中,数据输入和数据输出是作为一个整体。应用架构中除了输入系统,输出系统做为整个产品的一部分,需要纳入到应用架构图中。

明确应用调用边界

应用边界对于产品的定位、产品的设计有很重要的影响。在应用架构中需要通过不同颜色的标注,来确定产品与外部系统的边界。通过不同颜色标注外部来源系统、内部应用、应用依赖系统、输出系统。为后续的规划、发展提供基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1589411.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ObjectiveC-第一部分-基础入门-学习导航

专题地址:MacOS一站式程序开发系列专题 第一部分:基础入门学习导航 OSX-01-Mac OS应用开发概述:简单介绍下MacOS生态、Xcode使用以及使用Xcode创建app的方法OSX-02-Mac OS应用开发系列课程大纲和章节内容设计:介绍下此系列专题的文章内容组织形式以及此系列专题的覆盖内容…

极海APM32电机驱动板记录(二)

文章目录 1、解除写保护2、极海驱动板资源概述3、新建工程4、点灯5、嘀嗒定时器6、中断7、串口打印8、adc读取9、i2c尝试10、定时器测试11、电机驱动pwm测试 上一篇文章算是简单了解了一下极海的板子开发环境吧,结果前几天板子来了,然后发现一个大bug&am…

【Linux】Socket编程接口 | 实现简单的UDP网络程序

文章目录 一、预备知识理解源IP地址和目的IP地址理解源mac地址和目的mac地址认识端口号理解源端口号和目的端口号理解“端口号(PORT)”和“进程ID(PID)” 认识TCP和UDP协议TCP协议UDP协议 网络字节序为什么网络字节序采用的是大端…

使用 npm 工具高效更新项目依赖包

团队内部会用工具定时检查包的最新版本并通知,以便我们及时跟进社区进展,避免和技术栈出现版本脱节导致无法使用最新特性和优化内容 这里只说明手动查看和更新包的主要几个命令。 npm outdated:检查项目中过时的依赖包及其最新版本。 npm i…

漫画|数据工程师面试常见问题之数据倾斜

话说,闹钟一响,现实照进梦想,又是李大虎面试找工作的一天。 李大虎心里一直有个想法,如果一天睡20个小时,然后这20个小时全做美梦,醒来的4个小时用来吃喝拉撒,这样岂不就和那些富二代一样了&am…

Golang学习笔记(上)

Golang学习笔记(上) 安装Golang 来源:linux 安装 golang - 知乎 (zhihu.com) 由于我用的是linux系统,所以本文采用linux的安装方式介绍,如果你使用的是Windows/Mac 也可以看下该文章,或者自己去下列地址进…

Android RecyclerView性能优化及Glide流畅加载图片丢帧率低的一种8宫格实现,Kotlin

Android RecyclerView性能优化及Glide流畅加载图片丢帧率低的一种8宫格实现&#xff0c;Kotlin <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_MEDIA_IMAGES&qu…

关于UCG游戏平台的一些思考

UCG游戏平台&#xff0c;全称User Generated Content&#xff0c;即用户生成内容。它涵盖了所有玩家可以自主编辑的部分&#xff0c;包含并不限于换装、捏脸、关卡摆放等内容。 UCG概念在最近又火了起来&#xff0c;但这个模式出现的并不早。早在10多年前&#xff0c;war3编辑器…

探索Java中的栈:Stack与Deque(ArrayDeque和LinkedList)

文章目录 1. 栈&#xff08;Stack&#xff09;1.1 定义方式1.2 特点1.3 栈的层次结构 2. 双端队列&#xff08;Deque&#xff09;2.1 定义方式及继承关系2.2 特点&#xff1a;2.3 ArrayDeque2.4 LinkedList2.5 Deque 的各种方法2.6 如何选择ArrayDeque和LinkedList 3. 如何选择…

NAPI 类对象导出及其生命周期管理(下)

4. 样例工程源码剖析 工程的模板是Native C,模型是Stage。源码剖析主要围绕以下几个文件 4.1. NAPI导出对象和生命周期管理具体实现 4.1.1. 定义NapiTest类及方法 Napi.h文件内容如下&#xff1a; #ifndef __NAPI_TEST_H__ #define __NAPI_TEST_H__#include "napi/nat…

一款自研Python解释器

项目简介: PikaScript是一个完全重写的超轻量级python引擎,具有完整的解释器,字节码和虚拟机架构,可以在少于4KB的RAM下运行,用于小资源嵌入式系统。相比同类产品,如MicroPython,LuaOS等,资源占用减少85%以上。 入选2021年度 Gitee最有价值开源项目,加入RT-Thread嵌入…

从0开始创建单链表

前言 这次我来为大家讲解链表&#xff0c;首先我们来理解一下什么是单链表&#xff0c;我们可以将单链表想象成火车 每一节车厢装着货物和连接下一个车厢的链子&#xff0c;单链表也是如此&#xff0c;它是将一个又一个的数据封装到节点上&#xff0c;节点里不仅包含着数据&…

【c语言】结构体的访问

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;C语言 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、交流进步&…

力扣HOT100 - 41. 缺失的第一个正数

解题思路&#xff1a; 原地哈希 就相当于&#xff0c;让每个数字n都回到下标为n-1的家里。 而那些没有回到家里的就成了孤魂野鬼流浪在外&#xff0c;他们要么是根本就没有自己的家&#xff08;数字小于等于0或者大于nums.size()&#xff09;&#xff0c;要么是自己的家被别…

51-37 由浅入深理解 Stable Diffusion 3

2024年3月5日&#xff0c;Stability AI公开Stable Diffusion 3论文&#xff0c;Scaling Rectified Flow Transformers for High-Resolution Image Synthesis。公司像往常一样承诺后续将开源代码&#xff0c;开源之光&#xff01;&#xff01;&#xff01; 在LDW潜在扩散模型论文…

学习51单片机必备:从电子基础到编程技巧全解析

学习51单片机需要掌握一系列的基础知识和技能&#xff0c;以下是一些主要的学习内容&#xff1a; 电子基础知识 了解基本的电子元件和电路原理是学习单片机的基础。这有助于理解单片机如何与外围设备交互以及如何设计电路。 数字逻辑 理解数字逻辑和布尔代数&#xff0c;对于编…

第十三届蓝桥杯真题:x进制减法,数组切分,gcd,青蛙过河

目录 x进制减法 数组切分 gcd 青蛙过河 x进制减法 其实就是一道观察规律的题。你发现如果a这个位置上的数x&#xff0c;b这个位置上的数是y&#xff0c;那么此位置至少是max(x,y)1进制。一定要把位置找对啊 #include <bits/stdc.h> using namespace std; typedef l…

如何恢复 iPhone 删除的照片?

照片是iPhone空间不足的主要原因&#xff0c;因此许多用户选择删除一些重复或不喜欢的图片来释放设备。然而&#xff0c;人们在清洁过程中不小心遗漏了自己喜欢的照片的情况很常见。如果你找不到这些珍贵的照片&#xff0c;你一定很难过。其实&#xff0c;您不必担心这个问题&a…

echarts 多环形图

环形图效果&#xff1a; option {"angleAxis": {"max": 1,"show": false,"splitLine": {"show": false},"axisLabel": {"show": false},"axisTick": {"show": false}},"ra…

Idea显示无法自动装配。找不到‘ xxx’类型的Bean

虽然只标红&#xff0c;不报错&#xff0c;但是看着非常别扭&#xff01; 原因&#xff1a; 当我们在使用Autowired注解的时候&#xff0c;默认requiredtrue,表示注入的时候bean必须存在&#xff0c;否则注入失败。 解决方案一&#xff1a; 在自动转配的注解后面添加(require…