什么是好的应用?
根据ISO/IEC 25010的定义,好的应用应该具有以下属性。
● 满足功能需求:功能的完整度、正确性和恰当性。功能属性(或者叫功能需求)永远是架构设计中最基础的一点,其他所有的属性都可以划为非功能属性(非功能需求),又称质量属性。事实上,大部分的功能都可以用多种架构来实现,真正决定我们的架构选择的因素往往是非功能需求,也就是下面这些需求。
● 性能效率:时间表现(例如响应时间、延迟)、资源利用率和系统容量(例如IO吞吐量,可伸缩性也可以认为是容量的一种表现。
● 可靠性:可用性、容错性、可恢复性。
● 易用性:可学习性、可访问性(例如W3C的可访问性标准)、UI交互体验等,本文暂不对易用性讨论。
● 兼容性:共存能力(例如向上或向下兼容)、互操作性(例如不同的系统之间互相下达指令)、协同性,我们把系统的功能上的可扩展性也归入兼容性中。
● 可移植性:可适配性、可安装性、可替代性。
● 可维护性:可管理性、可监控性、可分析性和可测试性,模块化程度(高内聚低耦合)通常也算可维护性的一部分。
● 安全性:机密性、完整性、不可伪造性、可审计性等,本指南中,安全性将不单独作为一个章节,而是在各模块设计过程中讲解。您也可以参见阿里云安全白皮书了解更多。
在衡量上述属性时,您可以使用SMART(Specific、Measurable、Attainable、Relevant、Time-bound)原则:如果不满足这些原则,可以不计入考虑范围。实际上,还有一项DevOps也是我们在设计时必须考虑的非功能需求项,在后续部分章节中会体现。
什么是好的架构设计?
这本手册叫做应用架构设计指南,刚刚我们讨论了什么是好的应用程序。那么,什么是架构设计?架构的核心就是以抽象的方式考虑所有重要的点(也就是上面列出的点)。什么是设计?设计的核心就是解决系统的一个或多个问题。所以架构设计,核心目的就是解决系统内重要的问题,在现有条件下,做出的恰当决策,尽可能满足刚才提到的好的应用的几个特点。应用架构设计仅着眼于组件级别及更大的粒度,不会过多关注组件内部的实现,重点在于组件功能、组件结构以及组件之间的依赖。
什么是云上应用架构设计的特点?
进行云上的应用架构或网站设计时,我们需要考虑到云的特点:本地部署的应用通常是一个较大的整体,而云上应用会被拆散成若干个小的服务或组件,通过API或其他协议通信。云上的各类资源也是分散的,随时可以新增实例进行水平扩展。我们可以总结云上和本地应用架构部分不同点如下。
为什么需要云上应用架构设计指南?
云上应用架构设计指南用于帮助您在阿里云上,设计出好的应用程序,包括但不限于具备可伸缩性、可靠性、可管理性等上述提到的特性。想要在一本指南中涵盖所有应用设计细节,是不太可能的,因此我们内容呈现会遵循“刚好够用”的原则。
这本指南写作的时候,也参考了很多行业先进经验,在此对过往致力于云上应用设计的前辈们表示感谢!