09年必须关注的10大软件架构主题

09-05-09 xmuzyu
呵呵,对jdon思想不太满意的大师多看看。

10 Must-Know Topics For Software Architects In 2009

在过去一年左右的时间里,在相当平静,企业的软件架构变得相当令人振奋的一次。 我们终于看到新出现的一些课题已经融入主流,并潜在地改变了游戏规则,一些创新,本来徘徊在边缘的技术也开始进行颠覆式革命。

一些大的变化是:传统的霸权的第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应用) ,并了解他们如何可提供真正的实用价值。

[该贴被admin于2009-05-10 16:50修改过]

[该贴被admin于2009-07-07 08:53修改过]


                   

xmuzyu
2009-05-09 20:10
关系数据库已死?

叫嚣着关系数据库为王的大师接着看这个帖子。

本来打算翻译一下的,但是最近太倒霉了,两个手都受伤了,大家讲究着看看。

[该贴被xmuzyu于2009-05-09 20:19修改过]

ACoder
2009-05-09 22:18
每一种技术都由自己适合的领域,至今没有一种方法能够解决所有的问题,所以鼓吹关系型数据库可以解决一切问题是错误,同样说缓存是提高性能的唯一方法也是错误,必须在相应的环境下讨论才更具有讨论意义。

至于10 Must-Know Topics For Software Architects In 2009 这样的帖子,三五年前的时候我还看看,可是现在我不看,因为这些技术只是作者觉得未来具备发展潜力的东西,可是他能主导世界的变化么??你从软件发展的历史上看,多少认为是有前途的技术最后胎死腹中,个人学习应该认准自己认为正确的方向,然后努力的去做就好了,可以适当的关注其他技术的发展,抱着学习与借鉴的态度去面对其他的技术领域,而不是否定着一方去强调另一方。

最后想说,大师之所以能够被称为大师,不是因为它们学了多少新的技术,而是在某个技术领域具有非常强的认知,能够坚持自己的认知,能够将自己的知识完全的应用到开发当中。人云亦云永远只能被拖得很累,有了目标才不会被路边的野花分心。如果楼主认为OO是你发展的方向,那么你就努力的研究它,学习它的过程不是否定关系型数据库的过程,应当结合关系型数据库中的优点来改进你OO的设计。

xmuzyu
2009-05-09 23:43
>>所以鼓吹关系型数据库可以解决一切问题是错误,同样说缓存是提高性能的唯一方法也是错误

恩,这个比较认同。提高性能的方法有很多,缓存是一种比较好的方法。OO和关系数据库本来就是矛盾的,尤其是java领域,设计一个好的对象模型,如果对象模型的行为越丰富,越富模型,那么在持久化的时候就越困难,相反的如果采用面向过程的思维,那么相对简单一点呵呵。而要想减轻这种痛苦,最好有个对象数据库,而当今没有对象数据库怎么办,或者对象数据库不成熟怎么办,我选择了缓存。这样以来,我编程的时候脑子里是业务对象,而不是老是想着怎么把XX表的数据拿出来,它们由怎么组成XX对象这样的问题,从缓存中取出的对象是多数情况下是聚合根,这个聚合根富有丰富的业务含义,我直接调用对象的方法就OK了,并且调用聚合的方法有个好处就是所有的方法满足不变量约束,满足后验条件,当我们设计好聚合后,调用可以放心的调用,不用考虑其它的。

[该贴被xmuzyu于2009-05-09 23:47修改过]

hzgnjupt
2009-05-10 13:11
ACoder你说得真是太好了,我关注jdon一年多,今天看到你的话,实在忍不住出来赞同你一下:)

猜你喜欢
5Go 1 2 3 4 ... 5 下一页