azure 最佳实践 -- 随业务演化的架构
来源:互联网 发布:unity3d 手游开发 编辑:程序博客网 时间:2024/05/21 10:16
随业务演化的架构
每项设计决策必须考虑到业务
这项设计原则虽然看起来很明显,但在设计解决方案时要牢记这一点。你有数百万的用户,还是几千?一小时服务中断是否可以接受?系统会有大并发,还是流量始终比较小并且是可预测的?最终的每个设计决策都必须由业务需求进行说明。
建议做法
定义业务目标,包括恢复时间目标(RTO),恢复点目标(RPO)和容许中断的最大值(MTO)。这些数字应该关系到架构的确定。例如,要实现低RTO,可以实现自动故障功能将故障转移到辅助区域。但是,如果可以容忍更高的RTO,那么冗余度可能就是不必要的(复杂度)。
对服务级别协议(SLA)和服务级别目标(SLO)进行文档化,以及可用性和性能指标。例如构建一个提供99.95%可用性的解决方案。是否足够?答案是由业务来决定的。
围绕业务领域对应用程序进行建模。首先分析业务需求。使用这些需求来建模应用程序。考虑使用域驱动设计(DDD)方法来创建能够反映业务流程和用例的领域模型。
同时考虑到功能和非功能的需求。功能需求能够帮助你判断应用程序逻辑是否正确。非功能性需求可以帮助你判断应用程序是否做好这些事情。尤其是对可扩展性,可用性和延迟的需求。这些需求将影响设计决策和技术选择。
工作量拆分。在这种情况下,术语“工作负载”是指计算任务的计算或拆分能力,可以在逻辑上与其他任务进行分离。不同的工作负载可能对可用性,可扩展性,数据一致性和灾难恢复有不同的要求。
为(业务)增长而设计。从用户数量,交易量,数据存储等方面进行考量,当前解决方案可能满足需求。然而,健壮的应用程序可以处理递增的请求而无需对架构进行大的更改。参阅为扩展而设计以及分区原则,当然还要考虑到业务模式和业务需求会随时间而变化。如果应用程序的服务模型和数据模型过于僵化,那么架构很难随新的用例和场景进行演变。请参阅设计的演变。
管理你的成本。在传统的,部署在本地的应用程序中,需要为硬件(CAPEX)预付款。在云应用程序中,需要支付所消耗的资源。确保你了解所消费的服务定价模型。总成本将包括网络带宽使用,存储,IP地址,服务的使用等要素。有关更多信息,请参阅Azure定价模型。当然,还要考虑你的运营成本。使用云,你不必管理硬件或其他基础架构,但仍然需要管理应用程序,包括DevOps,事件响应,以及灾难恢复等。
每项设计决策必须考虑到业务
这项设计原则虽然看起来很明显,但在设计解决方案时要牢记这一点。你有数百万的用户,还是几千?一小时服务中断是否可以接受?系统会有大并发,还是流量始终比较小并且是可预测的?最终的每个设计决策都必须由业务需求进行说明。
建议做法
定义业务目标,包括恢复时间目标(RTO),恢复点目标(RPO)和容许中断的最大值(MTO)。这些数字应该关系到架构的确定。例如,要实现低RTO,可以实现自动故障功能将故障转移到辅助区域。但是,如果可以容忍更高的RTO,那么冗余度可能就是不必要的(复杂度)。
对服务级别协议(SLA)和服务级别目标(SLO)进行文档化,以及可用性和性能指标。例如构建一个提供99.95%可用性的解决方案。是否足够?答案是由业务来决定的。
围绕业务领域对应用程序进行建模。首先分析业务需求。使用这些需求来建模应用程序。考虑使用域驱动设计(DDD)方法来创建能够反映业务流程和用例的领域模型。
同时考虑到功能和非功能的需求。功能需求能够帮助你判断应用程序逻辑是否正确。非功能性需求可以帮助你判断应用程序是否做好这些事情。尤其是对可扩展性,可用性和延迟的需求。这些需求将影响设计决策和技术选择。
工作量拆分。在这种情况下,术语“工作负载”是指计算任务的计算或拆分能力,可以在逻辑上与其他任务进行分离。不同的工作负载可能对可用性,可扩展性,数据一致性和灾难恢复有不同的要求。
为(业务)增长而设计。从用户数量,交易量,数据存储等方面进行考量,当前解决方案可能满足需求。然而,健壮的应用程序可以处理递增的请求而无需对架构进行大的更改。参阅为扩展而设计以及分区原则,当然还要考虑到业务模式和业务需求会随时间而变化。如果应用程序的服务模型和数据模型过于僵化,那么架构很难随新的用例和场景进行演变。请参阅设计的演变。
管理你的成本。在传统的,部署在本地的应用程序中,需要为硬件(CAPEX)预付款。在云应用程序中,需要支付所消耗的资源。确保你了解所消费的服务定价模型。总成本将包括网络带宽使用,存储,IP地址,服务的使用等要素。有关更多信息,请参阅Azure定价模型。当然,还要考虑你的运营成本。使用云,你不必管理硬件或其他基础架构,但仍然需要管理应用程序,包括DevOps,事件响应,以及灾难恢复等。
阅读全文
2 0
- azure 最佳实践 -- 随业务演化的架构
- azure 最佳实践-- 为演化而设计
- 李敏:手机淘宝的架构演化实践
- Azure最佳实践(一)
- J2EE架构的最佳实践
- azure 最佳实践 -- 保持冗余
- 手机淘宝架构演化实践
- azure最佳实践系列1-自我修复的设计
- azure 最佳实践4 --可水平扩展的设计
- azure 最佳实践 -- 使用正确的数据存储
- Windows Azure 安全最佳实践 - 第 2 部分:Azure 提供哪些现成可用的安全机制
- SAP BPC 最佳业务实践
- J2EE架构的6个最佳实践
- J2EE架构的6个最佳实践
- J2EE架构的6个最佳实践
- J2EE架构的6个最佳实践
- J2EE架构的6个最佳实践
- J2EE架构的6个最佳实践
- POJ2421 Constructing Roads
- ActiveMQ开篇学习笔记
- C语言中的内存分配
- 周末训练笔记(三)
- 32位JVM对long类型的赋值不是原子性操作
- azure 最佳实践 -- 随业务演化的架构
- 计算机原码、反码、补码详解
- 单例模式的写法
- Mac下的myeclipse安装
- 开发中需要注意的问题
- 练习4: 求一个n阶方阵对角线元素之和。
- CSS选择器Selector或选择符学习笔记
- Win10下用Anaconda安装TensorFlow
- C语言小程序5--致新手