在过去一年左右的时间里,在相当平静,企业的软件架构变得相当令人振奋的一次。 我们终于看到新出现的一些课题已经融入主流,并潜在地改变了游戏规则,一些创新,本来徘徊在边缘的技术也开始进行颠覆式革命。
一些大的变化是:传统的霸权的第3和第4层应用模型 ,重量级的运行平台(集中式数据库计算模型),以及古典面向服务SOA的架构已经主宰了近十年,现在几乎被四分五裂了一系列新办法的设计和架构应用。
这些听起来似乎很轻率的话,但确实在悄悄发生,建筑师正在寻找新的解决办法,因为他们在新的领域中遇到了新的挑战。 因此,这些新的方式可以解决现行做法的缺点或添加新的功能, 例如一些例子包括建立可重复使用的平台的应用,OpenAPI开放API的故事 ,或符合成本效益的创建架构,可以即时支持全球分销,数百TB的数据,以及数以千万计的用户。
这些创新的特点是因为当前超大的系统正在构建(遭遇到由于规模scale,性能performance或功能集 feature set等引起的独特特点) ,软件的进步,也宽范围地跨越从日常的软件企业系统及互联网应用新移动设备,如新兴空间的社会化网络应用。
主流结构的应用,如关系型数据库模型,集中独占式计算运行方式,甚至是一些已经确定成熟多年的软件技术也正在受到挑战:非关系数据系统non-relational systems , 云计算cloud computing ,新的拉动为基础 pull-based的系统的一致性和数据的完整性,甚至是大型支持系统的运行和性能设计。
我们也不要忘记,Web 2.0带来的方法和设计模式也是越来越广泛地在在线系统和企业架构上的应用。 Social architectures, crowdsourcing, 和open supply chains正在成为规范,这些最新的软件系统的发展速度比预期快得多 不幸的是,有关这些专门知识以及如何有效地使用设计在架构上还是不很丰富。
掌握的最新情况,并探讨这些新出现的问题........
这里列出的最重要的新领域,软件架构师应该精通并期待在2009年:
10个软件架构师在2009年必须知道话题:
1. 云计算Cloud Computing。.......
2. 无关系型数据库Non-relational databases。托尼贝恩Tony Bain 在readwriteweb.com问:Is The Relational Database Doomed?关系数据库注定要死了吗? ,虽然到目前为止还为时过早宣布关系数据库消亡,但是有大量的有希望的替代品出现。 为什么要摆脱传统的关系型数据库? 某些应用程序的设计可以大大受益于优势资源的文件或为中心的存储方法。 使用非关系型数据库性能将高的很多;关系数据库有非常惊人的低天花板,即使伴随集群和网格计算。 不但存在对象数据库阻抗 ,不仅产生更多的开销,而且还同一时间在服务请求中对付高并发请求存在性能瓶颈,非关系数据库的解决方案包括CouchDB ,开始看到越来越多的产品,Amazon SimpleDB, Drizzle (from the MySql folks), Mongo, 和Scalaris.。 虽然许多应用程序将继续相处得很好的关系数据库和对象关系映射,它们还是不断地需要他们。
3.新一代分布式计算Next-generation distributed computing。一个出色的故事今天在纽约时报关于Hadoop提供了一个良好的背景下,关于这个问题:新的分布式计算模式正走出实验室,并成为不可或缺的选择,可以连接计算处理以前无法想象的大量的数据。 而传统的请求响应模式,网络的主体为导向的计算是重要的,所以越来越多的有效的方法来处理大量的数据,现在常见的现代软件系统。 **采访雅虎的Mark Risher 和Jay Pujara ,讨论Hadoop如何使他们能够通过数十亿片的邮件隔离模式 , 并确定垃圾邮件发送者。他们现在能够创建新的查询 , 并在几分钟内得到结果,得到问题的发生时间或被认为是以前不可能的做到的结果。 虽然Hadoop已经相当大的势头,其他类似的产品包括商业 GridGain 和open source Disco 。
4.面向Web的架构( WOA ) 。 我已经讨论了面向Web的体系结构好几年, 总之,前提是,RESTful 是一种更自然,生产,和有效的方式,建立日益开放和联邦网络为基础的应用。 该WOA的辩论已经持续了一段时间,因为它已经成为一个热门话题,但去年最大的网络世界已经投票赞成WOA的方式,网络正在变大; WOA为基础的应用程序更好地跟随这种方式。 在我看来,这是一个更好的方法来建立面向服务的架构,几乎所有要求,从而导致更多的柔软和弹性的软件,是那么困难和昂贵的建设和维护。 为企业考虑转向WOA ,这里是很好地概括我做了简短而回的问题和演变的SOA 。
5.混合集成Mashups。David Linthicum不知道今天在信息世界的Mashups已经澄清,他相信他们已成为不可分割的SOA和提供有价值的企业架构。 Mashup Patterns是一个很好的开始,可以研究它们如何影响软件体系结构。混合集成mashups是提供一个快速投资回报,使用一些比如AJAX 基本浏览器技术工具和重用Web服务和Web组件比如RSS等。
6.Open Supply Chains via APIs 开放API 。,其中越来越多的证据表明它是一个非常强大的模型,跨组织的SOA ,所以我已经开始称他们为“ 开放的供应链 。 ” 开拓您的业务的可扩展性,成本效益的方式,作为一个平台,为合作伙伴建立的是一个在21世纪最强大的商业模式。 ..... 因为越来越多的组织开放。 我最近提“国家联盟”的开放API 。
7.动态语言。虽然动态语言已经在网络上流行了,最早的是Javascript和Perl,这只是最近,它已经成为可以接受的发展“真正的”软件。 .NET和Java的仍然极为引人注目(共同)平台,但它的动态语言,如Ruby, Python, PHP, 和 Erlang动态语言越来越受欢迎 。 这是为什么呢? 正如我探讨了详细比较了一段时间后,权衡在运行时性能一般被发现,凭借动态语言可以完成一个大的生产力提高。....越来越多框架如 Rails, CakePHP, 和 Grails 是建立在动态语言上,他们带来了最新的最佳实践和设计模式,现在动态语言正在开始阶段,会有很大比例的新项目。 软件架构师应该对此做好准备。
8.社会计算Social computing。开发人员和软件架构师往往不适应社会计算方面的软件系统,但是Reed's Law已明确表明,社会制度的价值通常远远高于非社会制度。 或者你可以只看了许多流行的应用程序存在的主要驱动力的社会行为以及由此形成的(往往巨大)价值的参与造成的。 例如YouTube的脸谱, Twitter的,或数以千计的其他社会应用(企业和消费者都) ,教训是很清楚的:社会结构是一个重要的新的应用层协议栈......。
9. 端到端的计算结构Crowdsourcing and peer production architectures。强大的开放的商业模式已经开始改变我们运行我们的企业和研究机构。 开始是开放源码软件,并已转移到媒体和现在蚕食各种行业。 这是利用群体智慧....。 只要看看亚马逊的Mechanical Turk 或CrowdSound ,认为后者是一个widget 工具,允许甚至最终用户的动态包括crowdsourcing到他们自己的应用。 .....
10. 新的应用模式New Application Models。语义Web(Semantic Web )似乎再次上升,和我已经涵盖平台作为服务和混合集成,除了这些我们看到了全新的应用模式中出现大规模网络上。 无论是Facebook的应用,下一代移动应用服务( iPhone的机器人, RIM公司等) , OpenSocial还是日益流行的工具和设备,这一趋势在雾化软件(这是做也许仍然是最好和最有效迄今还在Unix ),但是这提醒我们,我们仍然有新的发现在我们面前。 虽然这些看似琐碎,....,对下一代内部网和门户网站以及在线“桌面” ,微型应用程序都不得不与scale伸缩性和安全做斗争,而其他嵌入应用程序中越来越飞速发展。 需要知道他们是如何工作的,为什么他们这么受欢迎(有几万对数以万计的Facebook和OpenSocial应用) ,并了解他们如何可提供真正的实用价值。
原文:http://www.jdon.com/jivejdon/thread/36197.html
分享到:
相关推荐
22_面向组件的大规模软件架构.pdf 23_软件构架设计总结.pdf 24 可靠性设计准则.pdf 25 软件可靠性培训讲稿.pdf 项目实例讨论-RUP&UML实践之路(全).pdf 因附件大于16M被分成了两个包上传,请下载软件架构师教程1....
在IT行业中,软件架构设计是开发高质量软件的关键环节。它涉及到如何组织和构建软件...这些内容通常会分布在01到10这样的PPT章节中,每章可能详细讨论一个或多个主题,帮助学习者逐步理解并掌握软件架构设计的全过程。
- **核心内容**: 软件架构关注软件系统的结构、行为和属性,涉及到构成系统的元素、这些元素之间的交互关系、配置、拓扑结构、设计原则等。 #### 2. 软件架构师的角色和职责 - **角色**: 软件架构师是软件项目的...
《软件架构实践 第2版》是一本深入探讨软件架构设计与实践的重要著作。软件架构是构建大型、复杂软件系统的基础,它定义了系统的组件、组件之间的关系以及指导系统开发和演进的原则。这本书的第二版提供了最新的理论...
高级软件架构师培训讲义,共分24章: 00_架构师与设计师 01_软件流程实施方案选择 02_软件架构文档设计 03_软件架构风险管理 04_如何描述和评估软件架构质量 ...22_面向组件的大规模软件架构 23_软件构架设计总结
### 软件架构实践(第三版)林巴斯——关键知识点解析 #### 一、概述 《软件架构实践(第三版)》由林巴斯编著,是一部深入探讨软件架构设计与实现的专业书籍。本书旨在帮助读者理解软件架构的核心概念、方法论...
《软件架构师教程》是一本全面且深入的指南,旨在帮助读者掌握软件架构设计的核心概念、原则和实践。作为系统架构师考试的重要参考资料,这本书涵盖了高级软件架构师所需的知识点,同时也是系统分析师提升专业能力的...
软件架构设计的成功与否,很大程度上取决于架构的品质。一个成功的软件架构应具备以下品质:良好的模块化、适应性、对系统动态运行的良好规划、对数据的规划以及明确且灵活的部署规划。同时,软件架构设计还需要考虑...
10 企业软件架构 11 软件架构方法论 12 User Interface Process 13 Business Layer Design 14 Data Access 15 数据库设计 16 通讯设计 17 Team Foundation Overview 18 开源框架研究 19 国际商用软件架构权威分析 20...
**软件架构说明书模版——构建高效且可扩展的软件构架** **1. 简介** 软件架构说明书是软件开发过程中的重要文档,它详细描述了软件系统的基础结构、组件之间的关系以及交互方式,为项目的成功实施提供指导。本...
“03_软件架构文档设计.pdf”关注的是架构文档的编写。良好的架构文档能清晰传达设计意图,便于团队协作和后期维护。通常,架构文档应包含系统概览、模块划分、数据流图、接口定义等内容。有效的文档设计是沟通的...
在准备软考高级软件架构设计师的考试过程中,考生应重点关注以下几个关键知识点: 1. **软件架构基础**:理解软件架构的基本概念,包括架构模式、架构风格、组件、接口、依赖关系等,以及它们在系统设计中的作用。...
**软件架构复习资料详解** **一、软件架构的产生与影响因素** 软件架构并非凭空出现,而是由一系列商业和技术决策塑造而成。这些决策受到多种因素的影响,包括系统涉众的诉求、开发组织的特性、设计师的专业素质和...
在软件开发中,架构模式是一种设计原则,用于构建软件系统的结构和组织。架构模式定义了系统内部的组件、组件之间的关系以及组件与外部环境之间的交互方式。不同的架构模式适用于解决不同类型的问题,它们各有优势与...
7. **可扩展性和灵活性**:软件架构必须考虑系统如何随着需求变化而扩展,以及如何适应新技术。良好的架构应该允许添加新功能而不影响现有系统的稳定性。 8. **性能优化**:在设计架构时,要考虑性能因素,如响应...
同时,架构师必须理解业务的优先级,并在设计软件架构时将其作为指导原则之一。 另外,软件架构师需要确保解决方案是简单且可用的。一些基本原则,如KISS(Keep it Simple, Stupid)原则,指导架构师在考虑通用性和...
在进行软件架构设计时,有几个关键要素需要特别关注: - **模块化**:通过将系统划分为多个独立的模块来提高系统的可维护性和可扩展性。 - **松耦合**:减少不同模块之间的依赖程度,使得每个模块都能够独立地进行...