zoukankan      html  css  js  c++  java
  • 开发中对于云计算、虚拟化、数据库等的总结

          近期看了不少关于云计算、虚拟化、数据库、领域驱动设计、软件架构设计的文章,感觉需要总结一番-_-!

          云计算已经成为我们同事之间交流时经常提起的时髦用词,现在各个大厂商都有相应的云计算解决方案,像微软、IBM、甲骨文、Google等,作为一名软件研发工作者来说云计算更多的以服务的形式提供给我们,例如我们编写的应用程序,可以直接部署到云中,客户就可以直接访问云中的应用,至于访问网络、硬件设施等细节我们都不需要太过关心,放上去就可以了,由云提供负载均衡、数据备份、访问流量、安全等等,这样我们开发就省心了呵呵,不过安全问题好像是云计算到现在都没有跨过去的一个坎,你的应用和数据可都是在云端啊,万一被黑客攻击了,那可就崩溃了,还有有一些关键性的领域性的API和服务后续可能都会在云中,由云提供,例如REST,我们开发直接调用就可以了,在这个过程中标准是比较重要的。

          虚拟化对于开发和测试来说都非常有帮助,现在比较流行的有VMware、微软的Hyper-V、IBM的VisualBox等,个人感觉还是VMware的牛逼一些,用着也爽快,个人感觉在研发测试方面提供的好处总结有开发环境搭建、程序兼容性、测试快照、模拟运行环境、程序环境快速实施等5个方面,开发环境搭建这一块主要是公司要有专门的技术部门负责生成各种开发环境的镜像,如果有一个新的同事加入的话,技术支持部门只需要在服务器上给你开一个新的虚拟机,按照规则生成账号信息发给新同事,新同事通过自己的电脑远程连接即可,当然也可以直接把镜像发给新同事,这样10分钟之内开发环境就搭建好了,以前咱们来个新同事光装开发环境都要1-2天,例如装操作系统、VS、各种数据库等,而且在装的过程中还有很多问题会浪费在沟通上,有时候装个sqlserver服务端中间出错了,有可能要重装系统哈哈,这样时间还得浪费;程序兼容性这一块主要是我们开发的应用程序可以在不同环境中访问,这个不同环境是指不同操作系统、不同浏览器等等,公司的技术支持部门只需要建立对应的10几个虚拟机即可,这样我们连上之后把应用部署上去,彼此都可以作为客户端访问不同虚拟机的应用即可,例如A虚拟机是window2003,浏览器是IE6,B虚拟机是win7 浏览器是IE8,那么我在A上用IE6访问B的应用,也可以在B上访问A的应用,这样各种兼容性都测试出来了,然后你的应用在客户那边就能更加容易赢得客户的青睐;测试快照主要是测试人员使用,例如测试人员在测试一个超发杂流程时,整个流程100多不,测试到56步时程序才会出错,这个错之有在第56步时才会出现,这个时候测试人员激动的去找开发人员,但是对应的开发团队出差了或者不在公司,那么测试人员肯定不能干等着啊,这时候快照就起作用了,测试人员只需建立一个快照(约5分钟),然后就可以继续其他测试工作了,等开发团队回来直接还原快照或者把快照备份发给他们即可;模拟运行环境主要是针对应用在上线前,例如想淘宝网这种电子商务网站,运行状态下的访问量是巨大的,访问方式也不同,这样我们可以借助虚拟化,建立集群,通过虚拟化进行压力等的测试。

         数据库这一块现在Big Data最近也流行起来了,No Sql存储已经越来越现实了,不过在传统的开发应用中,接触的还是太少,就连之前一直抨击No Sql 的IBM都开始推出No sql的数据库了,例如My Sql 最新版本中就加入了No Sql的支持,主要是Key/Value方式的,另外sysBase的列式存储也比较牛了,这里特别对列式存储总结一番,这种方式由于数据类型和长度都是一样的,查询分析起来特别快,它对于不经常变化的数据的效率是惊人的,后续大有替代传统数据库的趋势!

         领域驱动设计对于研发这一块比较重要,领域模型的沉淀比较重要,领域驱动设计可以用一个图来表示,见下图,掌握了此图的知识基本上就对领域驱动设计有了基础的了解,分

    层体系结构大家是比较了解的,像展现层、应用层、领域层、基础设施层等,这个是从大的方面按层次把业务分出来,这个实体与我们现在研发上的实体还不是一个概念,这个实体是指有唯一标示的实体,以前我们研发基本上一个表一个实体,在领域驱动设计里面就不能这样了,按领域驱动设计理解原来我们的实体就包括了实体和值对象,值对象就是没有标示的,另外还有一些对象既不能叫实体也不能叫值对象,像银行转账,它牵涉到多个实体和值对象的行为,我们把这种叫服务,聚合是指多个实体或值对象一块组成了一个模块,聚合包含了一个根和很多边界对象,例如我们经常用到的组织机构管理,机构就是根,人员就是边界对象,我们删除一个机构时就需要同时删除这个机构的人员;工厂跟我们设计模式中的工厂模式是一致的,通过工厂能够避免客户直接与产品产生关系,而通过工厂就很好的解决了这个问题,用户想要什么样的产品,只需提供给工厂相应的参数由工厂返回产品,用户并不需要关心产品是怎么生产出来的。

         软件架构设计这一块包括的就比较多了,需求分析这一块尽量用Admems矩阵去分析,这个是温昱大哥推荐的,我们按照竖坐标组织、用户、研发,横坐标功能、质量、约束按照从上到下、从右到左的方式分析需求,最终梳理出一个全面的需求矩阵,我们建立的是一个二维需求观,需求分析清楚了之后我们确定系统核心的质量和约束,在具体的功能模块设计时可以用鲁棒图、时序图、类图等图形方式进行设计,作为产品经理来说,原型图非常重要,如何快速的画出一个比较好的原型呢,我向大家推荐AXURE原型设计工具,这个工具可以把你画的原型直接生成可交互的网页,非常方便与客户、研发人员交流!

  • 相关阅读:
    Custom Roles Based Access Control (RBAC) in ASP.NET MVC Applications
    How To Display Variable Value In View?
    How do negative margins in CSS work and why is (margin-top:-5 != margin-bottom:5)?
    Async/Await FAQ (Stephen Toub)
    Async and Await (Stephen Cleary)
    Change Assembly Version in a compiled .NET assembly
    C# Under the Hood: async/await (Marko Papic)
    Bootstrap form-group and form-control
    Infralution.Localization.Wpf
    cocos2d-x 图形绘制
  • 原文地址:https://www.cnblogs.com/limengqiang/p/person2012_06_12.html
Copyright © 2011-2022 走看看