随笔分类 - 方法论
摘要:martin fowler老爷子的《企业应用架构模式》一书在江湖上流传已久,在十几年前就企业应用中的典型场景及设计模式进行了思考和总结,可以看到书中提及的常用模式在如今流行的企业应用框架中已经落地。近日拜读,受益不少,将一些感悟和共鸣记录下来,整理下,不全面也不深入,只便于后续乱翻书。
阅读全文
摘要:在产品迭代初期或者系统重构时期,业务模型的调整带来数据结构的变化,数据迁移不可避免。做好数据迁移需要考虑周全,且准备充分,做好预案,否则如果出现数据不一致问题,纠错成本高,同时核心业务数据的错误,会引起客户/业务方的投诉,团队也会承受巨大的压力。本文结合最近一个实际项目的数据数据迁移过程,讲述了踩过的坑,加上自己的一些思考得出的一些方法论,最后给出了数据迁移个脚本的一个实例
阅读全文
摘要:《The Twelve-Factor App》定义了一个优雅的互联网应用在设计过程中,尤其是在设计SAAS服务时,需要遵循的一些基本原则。本文为该设计原则的读书笔记,并备注了自己在项目实践中的一些实施经验,在后续的工作中,会陆续加入更多的落地资料和心得。
阅读全文
摘要:本文是DDD框架实现讲解的第二篇,主要介绍了DDD的Application层的实现,详细讲解了service、assemble的职责和实现。文末附有github地址。相比于《领域驱动设计》原书中的航运系统例子,社交服务系统的业务场景对于大家更加熟悉,相信更好理解。本文是【DDD】系列文章的其中一篇,其他可参考:使用领域驱动设计思想实现业务系统
阅读全文
摘要:本文结合团队在COMMUNITY(社区服务系统)业务建模过程中的实践经验,总结得到一些DDD业务建模的小招数,不一定是完美的,但是对我们团队来说很有效用,希望能帮到其他人。后面会陆续将项目中业务建模的一些经典例子放上来,分享给大家。本文为【DDD】系列文章中的其中一篇,其他内容可参考:使用领域驱动设计思想实现业务系统。
阅读全文
摘要:本文从战略层面街上DDD中关于限界上下文的相关知识,并以COMMUNITY系统(社区服务系统)为例子,介绍如何识别上下文。限界上下文(Bounded Context)定义了每个模型的应用范围,在每个Bounded Context中确保领域模型的一致性;上下文图(Context Map)表示各个系统之间关系的总体视图;通过持续集成(Continous Integration)确保多个限界上下文的模型统一。
阅读全文
摘要:本文主要介绍了基于SpringMVC+mybatis框架对DDD的落地实现。尝试将DDD的思想落地到代码层面。本文为系列文章中的其中一篇,其他内容可参考:使用领域驱动设计思想实现业务系统。
阅读全文
摘要:DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定。核心的指导思路归纳为:1、关注点放在domain上,将业务领域限定在同一上下文中;2、降低上下文之间的依赖,通过‘开发主机服务’(REST服务是其中的一种)、‘消息模式’、‘事件驱动’等架构风格实现;3、遵循分层架构模式。
阅读全文
摘要:DDD是Domain driven design(领域驱动设计)的简称,是一种软件设计和开发的方法论,特别适用于复杂业务领域软件设计和开发。本文算是《领域驱动设计》这本书的读书笔记,加上自己的一些读后感。网上有很多这本书的读书笔记,但是都是别人的,不如自己总结的理解深刻。建议大家在读这本书时结合《实现领域驱动设计》一起看,同时,一定要去实际建模和编码,理论联系实际才能得其精髓。
阅读全文
摘要:本文为《DDD》系列文章的导读,DDD系列blog记录了社区系统的DDD实践过程中的读书笔记、问题、解决方式、思考过程、心得。希望通过社区系统的DDD实践,挖掘出一些DDD的常见例子,抛砖引玉,共同进步。
阅读全文
摘要:最近在做订单及支付相关的系统,在订单表的设计阶段,团队成员就‘订单状态’数据库字段设计有了一些分歧,网上也有不少关于这方面的思考和探讨,结合这些资料和项目的实际情况,拟对一些共性问题进行更深一层的思考,笔耕在此,和大家一起探讨。
阅读全文
摘要:如何确保高并发下网站的高可用性?基本思路:解耦、集群、负载均衡、按需扩展、缓存、动静分离、读写分离、分库分表。
阅读全文
摘要:线上故障通常是指大规模的影响线上服务可用性的问题或者事件,通俗点讲就是:掉‘坑’里了,这个‘坑’就是线上故障!线上故障的处理过程可以形象地表达为:‘踩坑’、‘跳坑’、‘填坑’、‘避坑’。
线上故障的处理不仅是一项技术活,更是对技术人员/技术团队反应能力、决策能力、判定能力、组织能力的考验。面对突发的生产故障,需要快速定位问题,找到解决方案,快速实施解决方案并不是一件容易的事情。本文主要包括如下内容:线上故障处理的目标、思路、步骤、基础设施。
阅读全文