基础
一个好的软件基础架构,对于工程师和后续的后勤工作来说,是能够带来极大的便利的,更重要的是能够根据企业的需求发展,快速的完成业务需求,节省成本。对于未来的技术发展,好的架构也能够无缝衔接未来可能的技术变化。
一个好的软件基础架构都应该有哪些设计的要点?在参考了某些资料之后,我做了如下的总结:
具备快速部署应用的能力
具备合理的存储结构,能够满足未来的存储变化以及存储需求
能够根据未来业务发展的增长/减少变化,动态响应负载,从而节省资源,降低成本
在面对不同的服务对象(员工,合作伙伴,客户)时,能做出最快的服务切换、快速的响应
在考虑到的未来可能出现的需求及技术状况,也能够快速的适应新需求,新情况
能够满足未来的突发性增长性需求
避免暂时的“竞次方法”带来的后顾之忧,为未来的优化做出预解决
具备高可用能力,具有灾难恢复能力,故障切换能力,对数据具有足够的保护能力(数据安全性)
具备分布式资源环境下,能够做到快速的切换和扩展
能够对硬件资源进行合理使用、分配
具备与第三方客户的合作能力,诸如共享资源
扩展性强,扩展弹性强(扩展变多或变少,扩展的简易程度),能够按需扩展
开发人员能够对基础架构的性能进行预估判定,进而确定资源耗用、性能瓶颈
单一的通用方案并不适用于不同规模,环境和目的的企业,可以根据现状及未来状况作出通用解决方案。
能够优化计算资源,存储器资源以及网络资源。
好的基础架构能将静态 IT 基础架构转变为工作负载、资源和数据感知型环境
在多样化用户、复杂应用产品服务组合下,能够解决计算孤岛,处理不均,设计周期,结果延迟等问题。
具备智能工作负载与资源调度能力
能够对环境及资源进行监管、监视。
能够对结构化&非结构化的数据资源进行高效利用与处理,存储技术也能够处理各种结构数据,尤其是社交&移动数据。
数据中心具有低成本,高安全,高速度,高灵活,可扩展性等能力。
在指数型的数据增长下,基础架构具备层级式存储功能,能够将存储性能&成本&数据生命周期相关联。
扩展
实际上,我们基于机械式宇宙观
的思想,做一些思考,很多现实世界中的系统的设计,以及其运行状态都跟软件架构思想有异曲同工之处。比如:地铁的运行及站点的设计,电视节目的设计(电视的前端展示 & 后端的运行安排、彩排、采访等)等。
就拿电视一个频道来讲,一个电视频道可能拥有的功能以及出现的情况包括:电视节目的设计,这个频道播放的所有节目的安排,日常节目间要插入的广告的安排,节目内广告的安排(第三方合作接口),出现了突发事件怎么报道处理(高扩展),基于电视节目的收视率做不同的播放策略(数据及统计、分析),电视播放出现不正常的播放(高可用),或者信号被他人中断如何解决(异常的处理),线下的采访怎么安排合理的方式展现在电视上(数据的读取&逻辑处理&前端展示),等等。一个电视节目的台前台后的所有流程都可以同软件架构做出映射关系。
实际上,准确的说,软件的很多很多功能都可以跟现实世界做一个映射。我们完全可以观察现实世界的运作方式,来更好的理解软件结构,做出更好的设计。
进一步思考,在这种世界观的指导下,我们是否可以验证,绝大多数的系统运行,抽象成模型,模型的骨干结构都有着几近相同的功能和流程。那我们是否可以抽象出最健全、全面的模型?这样就可以用在所有系统的设计上,再根据具体的系统,进行其细节上的扩展,根据系统应用场景的不同,再做可理论验证的变换,调整系统完成适配。
那这样的话,任何系统的构建,都只需要一套实际可应用的系统模型,来构建所有的现实世界系统以及软件系统。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。