Cola4.0的工程实践


Cola4.0的工程实践

cola在今年迎来了4.0版本,在最新的版本中对包结构进行了调整以及将COLA项目整体划分为两个部分COLA架构COLA组件;
下面先简单的介绍COLA的改变,再介绍CLOA4.0的工程实践

COLA的改变

COLA4.0的改变主要是聚焦与COLA架构和COLA组件两个部分:

  1. COLA架构:关注应用架构的定义和构建,提升应用质量。
  2. COLA组件:提供应用开发所需要的可复用组件,提升研发效率。
    作者Frank画了两张图很好的表现出来

COLA4.0分层模型

COLA架构抽象

COLA 4.0d的实践

创建项目

创建项目命令与之前的相同还是执行以下命令即可:

mvn archetype:generate -DgroupId=com.agmtopy.demo -DartifactId=cola-demo -Dversion=1.0.0-SNAPSHOT -Dpackage=com.agmtopy.demo -DarchetypeArtifactId=cola-framework-archetype-web -DarchetypeGroupId=com.alibaba.cola -DarchetypeVersion=4.3.1

稍微注意修改 #groupId#/#artifactId#/#package#;
这个命令在PowerShell不能执行,参数传递错误,需要在CMD或者shell下执行

创建完成项目后可以看到项目目录如下:

cola项目结构_maven

使用gradle init将maven转换成gradle项目

cola项目结构_gradle

在maven项目转换成gradle项目时遇到几个问题:

  1. gradle ext定义常量在使用kotlin定义时,方式为val
  2. 主build.gradle.kts引入BOM,子项目使用组件版本问题未解决,现在还是通过在子项目中直接引入的目标组件

项目build成功后,通过Application.main启动即可访问

cola_helloworld

项目结构

cola项目结构_gradle

通过cola-framework-archetype-web创建出来的项目结构如上所示,这个结构比较符合标准项目的定义;
在实际使用中结合目前团队现有方案我进行了部分调整,调整后的结构如下所示

项目实践


├‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧integrationtest‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧‧┤
├╌╌╌╌╌╌╌╌╌api/app╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌batch╌╌╌╌╌╌╌╌╌╌╌╌╌┤
                           ├╌╌╌╌╌╌╌╌╌╌joblay╌╌╌╌╌╌╌╌╌╌╌╌┤
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌business/configure╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌domain╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌infrastructure/common╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤

在这个结构中调整的地方如下:
新增:integrationtest作为通用测试的模块
新增:configure作为业务配置的模块,专门处理业务配置
改变:adapter模块扩充为api/app/batch三个模块,其中app和batch作为实例的启动入口
改变:app模块扩充为joblay/business/configure三个模块,作为业务处理
改变:infrastructure层新增加common模块,承载通用处理和工具类的职能
删除:删除start模块,将启动模块下沉到appbatch

在这个模块设计中joblay存在的意义是用来实现批量业务领域内的功能;由于appbatch都只是承担start的功能;

项目地址为https://github.com/agmtopy/cola-demo

参考资料

COLA 4.0:应用架构的最佳实践


  TOC