刘宇航
(广西壮族自治区图书馆,广西,南宁 530022)
在我国社会主要矛盾变化的背景下,将新兴技术应用于公共文化服务体系的建设是适应时代发展的必然要求。公共图书馆作为公共文化服务体系中不可替代的一部分,既是公共文化服务均等化、标准化的载体,又是坚定文化自信的主阵地。因此,研究利用新兴技术构建图书馆信息系统,既是满足公共图书馆智慧化的需求,又是适应社会多元化文化服务的平台,还是跨行业融合发展的必要条件。
我国图书馆管理信息系统应用可追溯到20世纪90年代,此时建设的管理信息系统多是传统工作模式计算机化,以对图书馆业务进行管理为主要目的[1]。随着社会数字服务的发展,面向管理的信息系统难以满足时代的要求。邵波等[2]从公共图书馆业务角度出发,采用业务流程重组(BPR),将数据服务作为转型的方向,在改造业务流程的同时对信息系统升级,以满足智慧化发展的需要。许新龙等[3]从人、资源、技术和制度四个方面论述了智慧图书馆信息系统的组成要素,提出了基于数据仓库的智慧图书馆信息系统架构,阐明了数据集中的重要性。肖铮等[4]以开放、易扩展为目标,以FOLIO为实例,对下一代图书馆服务平台的特征、技术进行分析,论证了基于微服务架构方式进行构建的可行性。周纲等[5]从FOLIO技术架构、生态环境、运营成本等方面进行了可行性的论证,认为FOLIO的出现为我国图书馆建设下一代服务平台提供了新模式和新方向。
图书馆信息系统的构建正在从面向管理转变成面向服务,系统架构从单体架构向微服务架构转变。究其原因主要在两方面:一是读者不再满足传统的服务方式,使得原先面向管理建设的信息系统必须往面向服务转变;二是新兴信息技术的出现为解决诸多传统问题提供了新思路。
采用FOLIO为基础构建新型图书馆信息系统成为当下的标准模式。它分为系统层、网关层、应用层和界面层[6],采用微服务架构,同时它是开源项目,降低了二次开发的成本。但是,目前它的实际应用案例少,国内仅有少数人、财、物条件均具备的图书馆在探索,距离大范围推广应用还有很长的路要走。本文通过对FOLIO进行剖析,发现了3个实际应用问题,并对问题进行讨论,提出了一种新的系统架构。
FOLIO采用微服务架构,该架构从面向服务体系架构(SOA)的基础上演变出来[7],虽然它解决了SOA在体系治理、实时更新、持续供服务和支撑创新业务的痛点,但在整个应用层都采用微服务实现,这种强制将业务分割成为最小业务单元的设计,是设计上陷入沙粒陷阱[8]。另外,为保证高可用性,使用分布式部署解决单点故障,在业务单一的场景中,也会出现“沙粒”问题。如何做到使服务边界的划分与现实业务场景相适应,做到供给与需求结合[9],这既是微服务的重点,也是难点。
我国公共图书馆信息化建设发展至今,各级公共图书馆在传统面向管理的建设方式上,都已养成稳定高效的操作方法,然而读者更倾向不断的创新系统服务方式提高体验,这让馆员和读者在使用习惯上出现矛盾。
根据调查分析,我国2019年第三季度PC端IE浏览器占有率最高,为34.78%,其中以IE7占比最高,为28.78%[10]。FOLIO采用React作为前端截面,在兼容IE8上还存在不确定因素,更难以向下兼容。
FOLIO的架构会使数据被分割到各微服务中,提高了业务数据分析的门槛,难以对数据进行分析、开发和应用。从公共图书馆向智慧化发展的趋势来看,对业务数据的分析、开发和应用是必要的、急迫的。大多数研究都指出图书馆智慧化提升体现在服务方式、服务空间和服务内容上[11],而这些方面的提升依赖于物联网、机器学习、数据挖掘等技术手段实现。FOLIO作为面向下一代图书馆信息系统,并未将数据分析、应用涵盖在标准架构,从而在这方面出现缺失。
应对沙粒陷阱,需要从预防和治理两方面出发。预防是在设计阶段充分考虑微服务边界。微服务架构是每一个小型服务都围绕着系统中的某一项或一些耦合度较高的业务功能进行构建,并且每个服务都维护自身数据存储、业务开发、自动化测试案例以及独立部署机制[12]。设计阶段可利用数据库闭包识别的方法来解决边界识别问题,将业务流程中间环节出现交叉的业务归为同一集合,当任何新业务中间环节与集合中任何服务不再交叉时,该集合可以作为单个微服务,以此在设计上解决过度微化的问题。
在治理上,利用统一的接口网关、日志管理、配置管理达到运行维护层面的治理。接口网关可以对接口路由集中管理;日志管理对每个微服务的系统日志、业务日志、运行日志进行采集、整理和展示;配置中心对微服务的配置信息集中管理,实现在分布式架构中实现配置信息的同步和分发。
图书馆信息系统用户分成馆员和非馆员两类。利用对比分析法对用户环境进行比较,找到用户期望的应用方式应对习惯变更。用户习惯对比详见表1。馆员工作使用的信息系统主要依赖PC环境,而这一环境又极易受到外设驱动、浏览器、操作系统等环境因素的影响。馆员为保证工作连贯,相较于适应环境因素变更带来的新操作习惯,更倾向于稳定的操作习惯。非馆员多为现代浏览器,对于HTML5、CSS3、#javascript库兼容度高。访问终端以移动端为主,个人电脑为辅[10],更易接受新技术带来的优质体验,较好适应习惯的变更。
表1 馆员和非馆员用户习惯对比表
在建设时需要从实际应用场景出发,将用户分类处理。对传统信息系统进行改造,抽象出ILS业务中台,使其适应微服务架构的同时,在用户界面、操作习惯、外设驱动等方面不发生变化。对非馆员使用的业务进行微服务化,提高对外服务的独立性,可以“单业务单服务”的方式进行建设,充分发挥微服务敏捷开发的优势,快速适应非馆员的需求。
数据中台是为支撑企业各种数据分析和应用,解决数据定义各异、专业协同难、无法共享等问题的数据服务[13]。其对业务中台数据、读者应用的业务数据进行采集、分层存储,实现从数据资产的管理到数据的开发利用,再到面向应用提供主题式数据服务。
构建数据中台应当从采集整合、萃取加工、能力展示和能力开放四个维度出发。采集整合是对微服务离散的数据进行聚合;萃取加工是从聚合的数据中提取主题数据域;能力展示是展示加工处理的数据;能力开放是将数据加工后的成果,采用接口形式,提供给上层应用使用。
从缺陷与讨论出发,文章提出了一种基于微服务的智慧图书馆信息系统的建设思路,整体架构见图1。该架构由服务层、接口层、读者中心、业务层、资源层、统一配置中心、数据层、支撑层组成,采用自上而下逐层依赖的方式建设,并在核心架构的基础上增加了安全管理体系和日志监管与管理两大保障架构。
图1 智慧图书馆信息系统整体架构图
(1)服务层
服务层以读者为主要服务对象,采用微服务构建各种对外创新服务。该层微服务是通过接口层间接调取读者中心、业务层、资源层等下层支撑服务提供的接口,实现业务微服务的快速构建,以适应智慧图书馆面向服务、快速适配的要求。
(2)接口层
接口层的本质是接口网关,主要工作是对各逻辑层微服务的数据接口进行统一的路由管理、访问分流、访问限流、访问熔断等控制策略。接口层的出现将内部微服务结构进行了封装,将与多个微服交互转换成与接口层进行交互,避免了内部微服务接口变化后其他依赖该接口的微服务也必须修改的问题,降低了客户端与调用接口之间的耦合度。
(3)读者中心
读者中心包含身份认证、支付业务和单点登录三大业务流。以法定证件为唯一标识,将其他外部账号、第三方证件作为法定证件的关联项。读者中心主要的任务是将各微服务依赖的身份信息进行集中管理,既保证数据的鲜活度,又对享受服务的身份集中管控。
(4)业务层
业务层包含流通、典藏、采访编目等传统ILS业务。在该逻辑层,鉴于传统业务运行的稳定,可以对现有ILS系统进行改造,将读者数据和资源数据分割,抽象出业务的数据接口后接入接口层,为其他逻辑层提供业务的支撑。
(5)资源层
资源层包含由元数据资源的生成、存储、输出和数字资源的存储,元数据依赖ETL、爬虫、WebService等技术持续对商业镜像资源、纸质馆藏资源和数字资源进行描述。描述包含有题名、类型、描述、数字资源原始路径等,具有解释性质的信息。元数据采用都柏林核心(Dublin Core)格式进行保存。元数据是智慧图书馆信息系统中提高纸质文献、电子文献相关服务质量必须要涉及的数据,是文献相关性检索、读者协同过滤推荐等智慧应用的“灵魂”。
(6)统一配置中心
统一配置中心集中管理服务层、接口层、读者中心、业务层和资源层的配置信息。各层的微服务为保证高可用性,常用容器编排工具借助分布式部署实现服务的高可用性,但分布式部署导致配置信息的更新难度与部署数量呈正比例增长。利用Apollo配置中心实现对微服务的配置信息的管理,支持配置文件的实时生效、版本发布、配置监控等功能。
(7)数据层
数据层采用中台设计,是整个架构的“大脑”,包含数据管理、数据开发、OneData、OneID和OneService体系。数据管理是对数据的质量、模型规范、安全等信息进行管理;数据开发提供算法开发、数据运维、数据集成等;OneData对基础数据依照业务场景、维度等要求建立主题数据域,为上层提供服务;OneID对数据进行萃取,建立与数据的统一连接标识,实现数据的融合;OneService对数据开发利用后提供统一的数据接口,为上层的业务中台(读者中心、资源层、业务层)提供数据服务。
(8)支撑层
支撑层是支撑上层运转的逻辑层,包含硬件设备、软件环境,以及各类感知服务对象的地理位置、移动轨迹、自然语言、面部特征等信息的传感器设备的集合。硬件部分包含有线网络设备、无线网络设备、服务器、存储等;软件环境包含操作系统、数据库管理系统、虚拟化软件、外部接口等;IoT设备包含摄像头、RFID、麦克风、红外线等。
(9)安全管理体系
安全的信息系统包含安全管理和安全技术两个内容,安全管理是从制度、组织、人员等方面进行管理,保证操作和运维是在合法的状态下实现;安全技术是在环境、通信、应用边界等方面运用安全技术进行监控、查漏、补缺。安全管理体系必须是制度和技术相结合贯穿整个信息系统的架构,是整个架构可靠、稳定运行的重要保障。
(10)日志监控与管理
日志监控与管理和安全管理一样是贯穿整个信息系统的架构,它是对整套架构体系的整体监控,便于了解各逻辑层、各微服务运行的健康状况,快速发现和定位异常,维护整个架构的可用性。
在整个建设实施周期里,采用螺旋实施模型进行推进,将螺线放置在笛卡尔坐标系中,四个象限分别是制定计划、风险分析、实施改造、效果评估,见图2。总体实施将分成三个阶段,第一阶段建设读者中心和资源层,第二阶段建设接口层、服务层、统一配置中心、日志监控与管理,第三阶段建设数据层。业务层、支撑层和安全管理体系属于对原系统的改造,在每个建设阶段中将逐步完善。
图2 智慧图书馆信息系统实施模型
制定计划是每个实施阶段开始前必须确定的,包含实现目标、阶段管理计划、范围管理、进度管理等。不同阶段计划制定侧重点不一样,一阶段应该着重考虑资源层中元数据如何有效获取,读者数据在迁移时进行唯一性的校验;二阶段就必须考虑如何制定规范的接入标准,使得一阶段的成果不会被推翻,同时带动整体的合理规划;三阶段考虑数据层的合理应用。
风险分析是对整个阶段的风险进行识别,罗列风险清单,对风险进行定性定量分析,制定应对策略。风险分析与制定计划不同,上一阶段的事件有概率会影响本阶段及后续工作,如一阶段各微服务之间的日志规范不统一,就造成了二阶段日志监控与管理实现困难、日志缺失的风险。
风险分析和实施改造存在交集工作,交集部分就是微服务的开发,因微服务属于独立创建,不影响现行系统服务,因此放在实施改造之前,待开发完成后再进行数据比对、迁移和整理。
效果评估环节是针对阶段成果进行检验,需要特别注意的是内部评估,因涉及到系统改造,在评估出现问题需要执行弹回计划时,阶段应该撤回到实施改造环节,而不是停留在效果评估环节。
服务行业向智慧化发展的潮流势不可挡,公共文化服务作为服务行业中以公益性为特点,以公民为覆盖面,以保障基本文化需求为目标的服务,必须要适应发展需要。公共图书馆作为公共文化服务保障的前沿阵地,应科学应变、主动求变。面向管理的图书馆信息系统在适应信息化发展和读者新需求上表现羸弱,学者们也尝试从业务、软件、物联网等多方面尝试改变这种状况。FOLIO的出现打破了图书馆行业的发展僵局,提供了新的发展思路,但是在看到FOLIO的优势同时,也要分析其不足,以问题为导向来优化设计。既要考虑理想形态,也要考虑如何实践与演变。文章提出的基于微服务的智慧图书馆信息系统以期能够找到理论与实践的兼顾点,在顺应发展需要的同时,兼顾实际情况。相信随着信息技术的提升和发展,更多的解决方案将不断地被发现,基于微服务的智慧图书馆信息系统也会不断迭代更新和推广应用。