0%

前面的文章《我理解的Smart Domain与DDD》中,我们分析了 Smart Domain 的设计,尝试回答了为什么 Smart Domain 可以用于实现 DDD,并对Smart Domain和DDD进行了一些扩展性的讨论。

虽然 Smart Domain 作为一种设计范式,可以辅助我们实现 DDD。但是具体到真实项目中,建模这个过程还得结合实际的领域问题,深入思考,大量尝试,大声建模,才能得到好的模型。有哪些值得参考的案例呢?下面分享几个个人在项目中觉得还不错的建模实践。

阅读全文 »

前段时间,咱们CTO八叉在极客时间做了一次关于用Smart Domain实现DDD的分享(点击这里回看)。一个新词Smart Domain进入大家的视野。

Smart Domain解析

Smart Domain是啥?为什么可以用Smart Domain实现DDD?本文尝试结合以往对DDD的学习和实践的经验,跟大家分享一下个人的理解。

八叉在分享中提到Smart Domain这个名字来源于Smart UI。我们都知道Smart UI是DDD中提到的一种反模式,只能用于解决简单问题。这里的命名略带反讽戏谑的意味。

阅读全文 »

背景

在最近的一个项目上,我们再次碰到了需要处理长时任务的场景。事实上,随着要处理的业务问题越来越复杂,要集成的系统越来越多,在Web服务器端开发中,长时任务处理已经成为了一个普遍的问题。

以下场景均可看作长时任务场景:

  • GitHub提交了一个PR,要分别向上百个相关用户单独发送邮件
  • 用户上传了一个文件,需要扫描这个文件是不是带病毒
  • 用户想以pdf格式下载某一个文档,需要先将文档转换为pdf格式
阅读全文 »

Efficiency. Image from https://unsplash.com/photos/gZB-i-dA6ns

Previous posts about Easy SQL

It’s always been a pain point to do ETL testing. But it more and more becomes a must after data being so widely used these days.

An ETL with more than 100 lines of code is common. The filter conditions, data transformation rules, join conditions and other logic there could be very complicated.

阅读全文 »

Easy SQL language features mind Mapping

Previous posts about Easy SQL

People like to use Scala because Scala provides powerful type inference and embraces various programming paradigms. People like to use Python because it’s clean, out-of-the-box, delicate and expressive. People like to use rust because rust provides modern language features and zero-cost abstract.

阅读全文 »

Easy SQL language features mind Mapping

Previous posts about Easy SQL

People like to use Scala because Scala provides powerful type inference and embraces various programming paradigms. People like to use Python because it’s clean, out-of-the-box, delicate and expressive. People like to use rust because rust provides modern language features and zero-cost abstract.

阅读全文 »

新的一期技术雷达如期发布,仔细阅读了这一期的所有条目,CUPID这一条尤其让我产生共鸣。

CUPID出自Daniel的一篇名为《CUPID—for joyful coding》的博文,即《CUPID-为了快乐编程》。CUPID是Composable/Unix philosophy/Predictable/Idiomatic/Domain based几个单词的缩写,有经验的同学一看就知道这是好代码的一些属性。知道Cupid这个单词的同学还能感受到这一组属性所蕴含的对于软件工程的热情。Cupid的中文是丘比特,是指古罗马的爱神,其意象是一个长有翅膀的小孩,拿着弓箭射向人们,以便人们可以相互爱上对方。

CUPID for joyful coding

阅读全文 »

Elegant. Image from https://www.yezibizhi.com/Img-4/100422/111045.shtml

In the previous post, we talked about a new ETL language – Easy SQL. You may be very curious about how to write ETL in Easy SQL. Let’s take a peek at it today.

阅读全文 »

Easy SQL

SQL as the main ETL language

Speaking of data development, we have seen various programming languages being used.

Some team will choose python for it’s simplicity and for the great pandas library. Other team will choose Scala if they are using Spark. Others may try Spark DataFrame API etc.

阅读全文 »

数据平台的一个重要功能是数据集成。数据集成听起来是要从分布式走向单体,似乎不太符合当前技术领域要尽可能分布式的趋势。

但是,数据集成常常是必要的。这种必要性可能来自于企业战略上希望打破数据孤岛,也可能来自于某些数据分析需要跨业务线跨系统进行。

实现数据集成的一个重要问题是如何进行跨系统的数据关联。为什么这个问题如此重要?这还要从企业发展过程说起。

阅读全文 »