江南大学 信息化建设与管理中心 沈叶忠 2017-12-01 yzshen@jiangnan.edu.cn 从“小应用、大平台”说起 江南大学 信息化建设与管理中心 沈叶忠 2017-12-01 yzshen@jiangnan.edu.cn
案例一(新版e江南)
案例二(网上服务大厅)
一个总体架构例子
?????
从组合到集成再到组合
“自顶向下,逐步求精” 分而治之 模块化,从整体到局部再到整体 模块的颗粒度,模块如何表达 各种模块在一个进程空间,单体结构 模块间如何交互? 多组模块在多个进程空间,集成结构 一个模块在一个进程空间,组合结构
模块的表达 非自治 自治的 静态库/动态库/静态类(*.lib、*.dll、*.jar) COM/ActiveX组件/控件 OLE Automation服务器 DCOM服务/RPC服务 WS*服务 微服务
应用开发模式 结构化方法 面向对象法 良好的秩序 从DFD开始,导出功能结构 从ERD开始,导出信息结构 从用例开始,导出交互结构 从对象开始,导出领域结构 良好的秩序 分层 良好的API及调用关系
单体结构 拌面结构 分层结构 (三明治)
协同系统(DCS、MIS)
协同结构
协同模式 独家模式(主体由一家公司独立完成,基于专用标准) 集成模式(主体由多家系统协作完成,基于开放标准) 组合模式(主体由多个组件组合完成,基于开放标准)
2002年,亚马逊总裁发了个内部邮件,于是有了今天的SOA(1) 今后所有的团队都必须通过服务接口公开他们的数据和 功能。 团队之间必须通过这些接口来进行沟通。 将不再有其他形式的进程间通信:没有直接连接,团队 与团队之间不再允许直接读取数据存储,不再使用共享 内存模型,没有任何形式的后门。唯一允许的通信方式 是通过网络调用服务接口。
2002年,亚马逊总裁发了个内部邮件,于是有了今天的SOA(2) 不论他们用什么样的技术,HTTP、Corba、Pub/Sub、自 定义协议,都不重要。 所有的服务接口必须从底层设计上支持外部化。也就是说, 团队必须在暴露再外界的接口上计划和设计自己的内容,没 有例外。 不按照我说的去做的员工立即离职。 感谢,祝好!
筒仓式架构
SOA架构
集成 为啥要集成?协同的需要 集成的效果!1+1>2 集成点什么? 如何来集成?
集成点什么? 系统要求,被集成系统的良好结构 功能集成,API 数据集成,API
如何来集成?API! 基于共享库 基于消息系统 基于远程调用(RPC、ESB、HTTP) 文件、DBMS、ODI等 Rabbit MQ、ActiveMQ、Kafka、、、 基于远程调用(RPC、ESB、HTTP) Corba、RMI、DCOM、Thrift、OLE Automation、OPC、 WS-*、REST、、、
应用程序的基本结构
组合 根据事物之间的联系,将它们有机 地结合成为一体,具有化零为整的功能。 集成是重量级的,系统间的联系。 组合是轻量级的,组件间的联系。
基于微服务的组合
案例三(常熟理工)
在哪里组合? UI前端(混搭,JS) UI后端(BPMS) 业务接口层(BPMS、ESB) 业务层 持久层
组合的利弊 RESTful目前是组合的主要技术手段 用例级组件及DDD(领域驱动设计)是组合的立足点 组合模式的好处:CD&CI、跨平台&语言、负载均衡 组合存在的挑战 给运维带来新压力 需要新的技术措施 需要新的支撑平台 需要新的开发模式
结论 集成与组合过程长期并存,是1+1>2的过程 应用系统要有良好的API,功能性API与数据性API都需要 单体、SOA、微服务、碎片化都有存在的场景,我更关注 API 组织的体系结构决定信息系统的体系结构(康威),信息系 统需要合适的支撑环境及体系
THANKS 2017-12-01