为什么需要这本指南

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

什么是好的应用?

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

什么是好的架构设计?

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

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

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

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

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

相关文章
|
3月前
|
Java 开发者 Python
编程之道:从小白到大牛的心路历程
【9月更文挑战第1天】编程,不仅仅是敲击键盘、编写代码那么简单。它是一种思维的锻炼,一种解决问题的艺术,更是一种生活的态度。本文将带你走进编程的世界,从最初的迷茫与困惑,到逐渐找到方向,再到深入探索与提升,最后实现自我价值的蜕变。让我们一起感受编程的魅力,体验技术的力量。
|
6月前
|
机器学习/深度学习
PRML第一章读书小结
PRML第一章读书小结
PRML第一章读书小结
|
7月前
|
人工智能 算法 程序员
这本“算法宝典”讲得透彻,完全掌握后,我竟拿到字节跳动offer
字节跳动,相信大家都已经对这家公司很熟悉了,尤其是近几年来,对它的认识也在不断刷新,它惊人的发展速度确实让行业内人刮目相看,如今很多年轻人也想要挤进字节跳动,它越来越火热,自然也就越来越难进了!
|
存储 程序员 C++
C++入门详细笔记(共八章)(上)
C++入门详细笔记(共八章)
97 0
C++入门详细笔记(共八章)(上)
|
数据挖掘
书单:分享我的读书笔记和最近阅读的几本好书
人最重要的是三个能力:①学习力-学习总结的能力;②输出力-逻辑思维和沟通表达的能力;③反思力-自省和修正的能力; 阅读、学习,让自己更加快乐,让自己有更多的可能性,让生命的意义有可能延展和突破。
822 2
书单:分享我的读书笔记和最近阅读的几本好书
|
数据挖掘
|
缓存 数据可视化 Java
12月新书,送出一本你爱的
每月小编都会盘点本月的异步新书,送出一本你最爱的异步图书。12月上市新书本次带来9本,涉及到的领域分别是Linux、大数据技术、软件测试、GO语言、Wireshark数据包、C++编程、IT运营等,从最新的书了解最新的技术,异步新书让你更好地应对快速变化的科技世界。
1611 0
|
Java 测试技术
华文慕课Java程序设计笔记
对象的自动清除 对象回收是由垃圾回收线程负责 System.gc()方法可以要求系统进行垃圾回收,仅仅是建议系统 java没有“析构方法”,但Object的finalize()有类似方法 系统在回收时会自动调用对象的finalize()方法 protected void finalize() throws Throwable{} 子类的finalize方法可以在里面释放系统资源,一般来说,子类的finalize方法中应该调用父类的finalize方法。
1325 0

热门文章

最新文章