Kaikeba 现有系统合并与改造方案 - tianlu1677/tianlu1677.github.io GitHub Wiki

核心: 实现去Rails化以及以Java API 为中心,前端框架为展示的架构。

现有系统方案

现有系统

系统/方案 passport cms lms lcms cms_admin admin dashbord
Js/rails ✓O O O O
Backbone/rails ✓O O O
AngularJs
Backbone + RectJs

注: ✓ 是将要采用的方式,O是现有的方案。时间节点: 2015-04-12 。 dashbord 是挂载在admin系统下。


现在所有的系统都采用rails作为Web server,借鉴其部署、文件压缩等内容。

passport系统是ruby的casserver单点登录系统,样式比较简单,单独成立,不需要对其进行大的改动,依然保持原有系统的架构和方式。

CMS

cms: 原有的系统主要采用的是rails来写前台的业务逻辑。在未来的开发中,新功能和业务采用AngularJs来编写前台的页面展示效果,数据是通过Java API来获取。同时等待Java API准备完毕后,逐步取代rails来编写的前台业务逻辑。

遇到的主要问题:

  • Java API 能覆盖到以前的业务逻辑
  • AngularJs 能够完全按照之间的页面内容来复写
  • 全文检索 Solr 的替代

LCMS/cms_admin/admin/dashbord

由于以前系统过于分散,所以打算把后台建课功能模块整合,按照时间节点来安排。

  1. cms_admin中课程建设模块,通过Java API的方式,集成到LCMS中建课功能模块中,实现建课流程的简化。

  2. admin中的权限管理部分移植到LCMS中,成为相对独立的部分。

  3. dashbord的内容移植到LCMS中一个命名空间中。

  4. LMS中的导学老师的功能模块,移植到LCMS的Backbone中,必须要先把admin移植过来,借助admin的Backbone前端来实现。

  5. 新功能开发都将采用Backbone与Java API合作的方式来做。

LMS改造方案

原有系统中,是借助同LMS中相同的models、controllers、jbuilder,通过区分namespace以及couse_class的id以及type来区分普通班次、微专业。而将来还会开展多种不同类型的课程,为了更好的拓展性,对LMS对其改造。

原则1. 普通班次系统与微专业系统不改动,只修改其中简单的bugs。

原则2. 新系统底层能够主动兼容普通班次与微专业内容,实现只动页面,而不动大的底层。

  1. 系统完全拷贝一份现有的系统,包括backbone和models、controllers
  2. 对原系统的难以修改的部分,进行重写、重构,包括Backbone的样式效果和后端rails jbuilder 提供API的格式和内容。 ps: 这个不知道对起采用rails Grape来重写rails controller 和jbuilder的难度有多大
  3. 新功能的开发都将采用Backbone与Java API的方式来做。

因此对设计到rails的地方,逐步用Java API来取代,不再用rails做新的功能,脱离rails的依赖。

最终会演化成:

lcms: 负责建课 lms 深度课程学习 cms 前台展示部分 (cms_admin: 只对内部开放)

系统改造难点考虑

  • admin ——> LCMS迁移,★

  • dashbord ——> LCMS, ★

  • cps,主要考虑到文件的存储格式,★★★

  • lms 优化与重构, ★★★★


TODO

  • CMS、lms等系统的解释
  • 对合并LCM、cms_admin、admin的难点的考虑
  • 对lms 哪些部分功能要全部重写,重构,需要对其有个全部的考虑。
  • 整个缓慢迁移的时间的估算