走近领域驱动设计(二)

上一篇讲了事件,以及为什么要使用事件,主要是为了解耦,但是有同学就问了,同步如果订阅事件的人太多,比如13亿人都关心上头条的事,那么RaiseEvent得等13亿人都处理完,那得多久呀,从此再也不敢发事件了。
 

事件驱动之异步事件

 
举个例子,你在网上下单,下完单要通知库房,甚至要通知供应商补货,如果都是同步的话,消费者还不等急死呀,实际上你在电商网站上下个单, 一般你很快就能到订单页面,那个页面告诉你:“兄弟,订单已经创建成功,订单号是xxxxx-xxxxx-xxxx-xxxx,你的订单已经提交到库房” 等。然后你就很快了的下另一单了。好吧,提问的同学,说好的妹子呢?
 

实现思路

走近领域驱动设计(一)

从我做过的项目来看,似乎欧洲已经有很多的公司开始实施领域驱动设计了,而我本人了解领域驱动设计也有些时间了。但是网上不管是文章还是代码,都显得太过高大上,一谈领域驱动设计,一大堆的概念一股脑的给你上上来,搞的有点晕头转向,而我想在一些中小项目中实施领域驱动也遇到了不小的障碍,大家对很多新的东西总是处于一种恐惧的状态。而且在真正开始实施时,也遇到一些疑问,所以想和大家交流学习,因此开始在此写写对领域驱动设计的理解。后续面陆续会有一些轻量的演进代码。
 

为何要领域驱动设计?

1简化数据存储

写在盛安德成立14年:用敏捷协助客户业务创新

盛安德14周年:用敏捷协助客户业务创新
这两年国内IT行业有较大发展,尤其是互联网产业突飞猛进,加剧了行业人才竞争。我们一直引以为傲的薪水优势已经消失殆尽,尽管我们在提升报价上不遗余力,尤其在美国市场,近两、三年我们的报价提升了50%以上。如果单纯提高报价,靠传统的项目外包业务和供应商ODC模式(Vender),我们的可提升空间已经不大了,业务转型无法避免。
 
我们必须为客户提供更高附加值的服务,咨询服务是我们最先想到并开始尝试的,但很快我们就发现仅靠咨询服务,仍然不能全面提升我们的价值和报价,除非人人都是咨询师。同时,当我们的咨询师拿到客户合同,开始实施时,他发现实施过程也面临方法问题,照老办法自己累不说,还经常成为团队的瓶颈。怎样与开发(交付)团队合作,能够在保证高质量交付前提下,为客户创造最大价值?
 

Elasticsearch - 让你的搜索飞起来

接触Elasticsearch是两年前因为项目的需要。客户位于西雅图,对于新技术有着敏锐的洞察力,正好项目需要实现搜索功能,客户就想尝试采用Elasticsearch来实现整个网站的检索功能,然后就被迫去学习了一下。一开始我是排斥的,但还是忍不住想看一下为什么客户要推荐它。随着深入的使用,Duang~~,才发现这货果然是个神器,只需要轻轻松松的简单配置一下,就可以让你的程序的搜索功能插上翅膀,带着用户在你的应用里翱翔。

1.揭开Elasticsearch的面纱

既然这货这么厉害,那它究竟是个什么东东呢?首先我们不妨假设这样一个需求,在我们的程序中需要实现一个搜索功能,需要支持全文检索,模糊匹配,按相关度排序,并高亮显示关键词。

测试驱动开发(TDD)实践

不知道大家有没听过“测试先行的开发”这一说法,作为一种开发实践,在过去进行开发时,一般是先开发用户界面或者是类,然后再在此基础上编写测试。但在TDD中,首先是进行测试用例的编写,然后再进行类或者用户界面的开发。由于要先开发测试用例,那么开发人员就必须清楚测试的目的,所测功能模块的业务逻辑以及需要测试的场景。这样TDD确保了项目的代码与所需的业务是匹配的,并且在日后的开发工作中也能确保之前所做的功能的可测试性。
 
很多同学问TDD是使用那种编程语言,或者是某种技术,这里需要明确的是,TDD并不是某种技术,而是一种项目实践。
 
二.传统开发模式与TDD开发模式
 

Software Development Project Management: The importance of the role of project leader

接到这个命题作文已经有一段时间了,一直没有写,主要原因是里面有两个东西影响,一个是标题里的Management,大部分人第一感觉Management就是要“管”人,就是 “权”,另外一个词是Leader, Leader经常被人翻译为“项目经理”,也就是“官”。所以在我写文章之前一定要把这两个词解释一些,因为这两个东西一直是我作为负责人要去弱化的东西。同时,我需要解释一下这两个英文词我的理解,”Management” 就是管理,Leader就是就是引导,就是榜样。

第一次做“敏捷教练”

一位软件产品公司朋友找我,想在公司内部推动敏捷,让我帮忙做研发团队敏捷教练。这是四、五个月前的事情,不久前,团队终于在Scrum模式下完成了一款产品升级,尽管跌跌撞撞,但还是坚持下来了。我在过程中只参加了两次回顾会。
 
第二款产品比第一款困难得多,无论技术难度还是业务复杂度都不在一个量级上,团队里有一半成员经验丰富,另一半几乎是新手。经过商量,他们决定让经验丰富的成员带新手,将项目分成几个大的模块,每个人带一个新手领一个模块。PO和架构师都认为这样既能保证开发进度,也能保证质量,只是将八个人变成四个人的敏捷团队。是这样吗?
 

数据仓库浅析

数据仓库基础

数据仓库和传统的数据库不同,它是为各行各业的决策制定过程提供支持的所有类型数据的战略集合。它的原始数据一般来源于传统的数据库系统,也叫业务系统,将获得的数据源汇集起来,根据项目需求,经过数据仓库建模,ETL(数据的抽取,转换和加载),将处理后的数据存储于数据仓库中,最后通过前台展现为领导的决策制定提供数据支持。

因为数据仓库的项目主要是跟数据打交道,比较枯燥也很繁琐,我在项目中经常听到一些同事抱怨做数据仓库类型的项目太累,天天扎在数据堆里,无趣急了。诚然,不过我认为数据固然枯燥,但是当你发现最后你ETL的结果或者报表上展现的数据能跟客户方统计出来的数据(或者是客户期盼的结果)能对上时,当你做出来的一张报表能为客户节省每个月一周时间时,当整个数据仓库项目能够给客户带来很大的商业价值时,我想你应该会有很强的成就感,这也正是数据仓库项目所追求的目标。

Pages