为什么需要这本指南

简介: 这本手册叫做应用架构设计指南,刚刚我们讨论了什么是好的应用程序。那么,什么是架构设计?架构的核心就是以抽象的方式考虑所有重要的点(也就是上面列出的点)。

什么是好的应用?

根据ISO/IEC 25010的定义,好的应用应该具有以下属性。
image.png
● 满足功能需求:功能的完整度、正确性和恰当性。功能属性(或者叫功能需求)永远是架构设计中最基础的一点,其他所有的属性都可以划为非功能属性(非功能需求),又称质量属性。事实上,大部分的功能都可以用多种架构来实现,真正决定我们的架构选择的因素往往是非功能需求,也就是下面这些需求。
● 性能效率:时间表现(例如响应时间、延迟)、资源利用率和系统容量(例如IO吞吐量,可伸缩性也可以认为是容量的一种表现。
● 可靠性:可用性、容错性、可恢复性。
● 易用性:可学习性、可访问性(例如W3C的可访问性标准)、UI交互体验等,本文暂不对易用性讨论。
● 兼容性:共存能力(例如向上或向下兼容)、互操作性(例如不同的系统之间互相下达指令)、协同性,我们把系统的功能上的可扩展性也归入兼容性中。
● 可移植性:可适配性、可安装性、可替代性。
● 可维护性:可管理性、可监控性、可分析性和可测试性,模块化程度(高内聚低耦合)通常也算可维护性的一部分。
● 安全性:机密性、完整性、不可伪造性、可审计性等,本指南中,安全性将不单独作为一个章节,而是在各模块设计过程中讲解。您也可以参见阿里云安全白皮书了解更多。
在衡量上述属性时,您可以使用SMART(Specific、Measurable、Attainable、Relevant、Time-bound)原则:如果不满足这些原则,可以不计入考虑范围。实际上,还有一项DevOps也是我们在设计时必须考虑的非功能需求项,在后续部分章节中会体现。

什么是好的架构设计?

这本手册叫做应用架构设计指南,刚刚我们讨论了什么是好的应用程序。那么,什么是架构设计?架构的核心就是以抽象的方式考虑所有重要的点(也就是上面列出的点)。什么是设计?设计的核心就是解决系统的一个或多个问题。所以架构设计,核心目的就是解决系统内重要的问题,在现有条件下,做出的恰当决策,尽可能满足刚才提到的好的应用的几个特点。应用架构设计仅着眼于组件级别及更大的粒度,不会过多关注组件内部的实现,重点在于组件功能、组件结构以及组件之间的依赖。

什么是云上应用架构设计的特点?

进行云上的应用架构或网站设计时,我们需要考虑到云的特点:本地部署的应用通常是一个较大的整体,而云上应用会被拆散成若干个小的服务或组件,通过API或其他协议通信。云上的各类资源也是分散的,随时可以新增实例进行水平扩展。我们可以总结云上和本地应用架构部分不同点如下。
image.png

为什么需要云上应用架构设计指南?

云上应用架构设计指南用于帮助您在阿里云上,设计出好的应用程序,包括但不限于具备可伸缩性、可靠性、可管理性等上述提到的特性。想要在一本指南中涵盖所有应用设计细节,是不太可能的,因此我们内容呈现会遵循“刚好够用”的原则。
这本指南写作的时候,也参考了很多行业先进经验,在此对过往致力于云上应用设计的前辈们表示感谢!

相关文章
|
开发框架 架构师 Java
《深入理解分布式事务:原理与实战》,不可错过的精品!
在分布式应用系统中,特别是在金融相关的场景下,分布式事务是大家都关注的核心技术,同样也是系统的技术难点。本书从数据库和服务的分布式基础开始,由浅入深阐述了分布式事务的原理、解决方案。这种以框架开发者视角分享的分布式事务实现的源码和实践用例,对于应用架构师和开发者都有极大的价值。
5243 1
《深入理解分布式事务:原理与实战》,不可错过的精品!
|
10月前
|
前端开发
基于CSS3+Bootstrap实现的侧边栏后台菜单源码
CSS3+Bootstrap实现的侧边栏后台菜单特效源码是一段基于Bootstrap和图标库制作的侧边栏菜单后台管理页面效果代码,简洁大方、易于管理,是一段非常不错的后台菜单栏效果,欢迎对此段代码感兴趣的朋友前来下载。
181 54
|
Shell 开发工具 git
git 常用命令详解(merge/rebase/cherry-pick)
git常用命令详解。 git merge将已提交的commit(自历史记录与当前分支分开以来的提交)合并到当前分支中。 rebase变基的原理 git-cherry-pick能应用(合并)已经存在的commit,即选择合并某个特定commit
|
调度
FreeRTOS操作系统配置文件FreeRTOSConfig.h
FreeRTOS操作系统配置文件FreeRTOSConfig.h
243 1
|
前端开发 API Perl
一张图快速了解 Istio 的 EnvoyFilter
EnvoyFilter 提供了一种机制来定制 Istio Pilot 生成的 Envoy 配置。使用 EnvoyFilter 修改某些字段的值,添加特定的过滤器,甚至添加全新的侦听器、集群等等。
2092 0
一张图快速了解 Istio 的 EnvoyFilter
|
设计模式 关系型数据库 程序员
【设计模式】设计原则
【1月更文挑战第12天】【设计模式】设计原则
|
小程序 前端开发 Java
年中福利!阿里技术电子书 80 本+上半年大会资料 PDF 免费下载!
阿里云开发者社区超大技术福利!80+阿里系电子书开放下载,覆盖 Java、物联网、云原生、前端、大数据、开源、AI 等技术领域,深度分享阿里工程师实践精华,顶级技术内容一手掌握。
38708 0
年中福利!阿里技术电子书 80 本+上半年大会资料 PDF 免费下载!
|
Cloud Native 数据可视化 测试技术
免费下载!阿里Nacos开源必备书籍《Nacos架构&原理》
Nacos/nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称;一个更易于构 建云原生应用的动态服务发现、配置管理和服务管理平台。 官网:https://nacos.io/ 仓库:https://github.com/alibaba/nacos
91344 3
免费下载!阿里Nacos开源必备书籍《Nacos架构&原理》
带你读《阿里云卓越架构白皮书》——4、性能优化(1)
带你读《阿里云卓越架构白皮书》——4、性能优化(1)
314 0
|
供应链 架构师 Cloud Native
详解DDD领域驱动设计实践 | 开发者社区精选文章合集(十)
什么是DDD?如何系统学习DDD?本篇通过案例实践带你分析学习。
详解DDD领域驱动设计实践 | 开发者社区精选文章合集(十)