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
由于以前系统过于分散,所以打算把后台建课功能模块整合,按照时间节点来安排。
-
cms_admin中课程建设模块,通过Java API的方式,集成到LCMS中建课功能模块中,实现建课流程的简化。
-
admin中的权限管理部分移植到LCMS中,成为相对独立的部分。
-
dashbord的内容移植到LCMS中一个命名空间中。
-
LMS中的导学老师的功能模块,移植到LCMS的Backbone中,必须要先把admin移植过来,借助admin的Backbone前端来实现。
-
新功能开发都将采用Backbone与Java API合作的方式来做。
LMS改造方案
原有系统中,是借助同LMS中相同的models、controllers、jbuilder,通过区分namespace以及couse_class的id以及type来区分普通班次、微专业。而将来还会开展多种不同类型的课程,为了更好的拓展性,对LMS对其改造。
原则1. 普通班次系统与微专业系统不改动,只修改其中简单的bugs。
原则2. 新系统底层能够主动兼容普通班次与微专业内容,实现只动页面,而不动大的底层。
- 系统完全拷贝一份现有的系统,包括backbone和models、controllers
- 对原系统的难以修改的部分,进行重写、重构,包括Backbone的样式效果和后端rails jbuilder 提供API的格式和内容。 ps: 这个不知道对起采用rails Grape来重写rails controller 和jbuilder的难度有多大
- 新功能的开发都将采用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 哪些部分功能要全部重写,重构,需要对其有个全部的考虑。
- 整个缓慢迁移的时间的估算