王昊賢
摘要?在傳統(tǒng)圖書館集成管理系統(tǒng)轉型換代之際,“老系統(tǒng)”和“新服務”如何銜接以滿足圖書館發(fā)展需求和提供讀者服務成為圖書館建設的技術難點。文章從微服務與FOLIO架構作為切入點,以北京大學圖書館閉架圖書叫號系統(tǒng)為例進行探索,介紹了基于微服務架構的FOLIO模塊實踐的設計思路、系統(tǒng)架構和技術使用,并通過分析系統(tǒng)應用數(shù)據(jù),提出了優(yōu)化圖書館服務的對策和建議;從微服務架構技術優(yōu)勢、應用場景和微服務架構下的圖書館角色轉變等角度進行了討論,總結了微服務技術在圖書館管理和服務中的創(chuàng)新意義,可為其他圖書館提供參考借鑒。
關鍵詞?FOLIO?微服務?北京大學圖書館?叫號系統(tǒng)
分類號?G252
DOI?10.16603/j.issn1002-1027.2020.04.004
1?引言
無所不在的網(wǎng)絡、無所不在的計算、無所不在的數(shù)據(jù)、無所不在的知識和無所不在的想象已成為當下大學生的主要生活方式和工作模式。隨著作為互聯(lián)網(wǎng)世代的“90后”和“00后”逐漸成為圖書館的主要用戶群體,用戶的需求已不再局限于圖書館的傳統(tǒng)服務,而更趨向于自動化和智能化,這對圖書館的工作提出了新要求,傳統(tǒng)的圖書館工作流程和服務方式與新時代的用戶需求之間產(chǎn)生了明顯的代溝。
信息科學技術的發(fā)展使得傳統(tǒng)的圖書館集成管理系統(tǒng)(ILS)在資源管理和業(yè)務流程管理上受到了沖擊,“新一代圖書館服務平臺”成為學界的討論熱點。早在2013年殷紅、劉煒就指出原有的“圖書館集成管理系統(tǒng)”已完全喪失了“集成”性[1]。面對這一困境,肖錚、林俊偉認為新一代圖書館服務平臺應具有:平臺化、開放性、易擴展性和云端化等特征[2]。陳武等認為下一代圖書館服務平臺應充分利用最新的云計算技術和架構的優(yōu)點,以降低軟硬件維護成本[3]。吳建中認為,下一代圖書館技術要把體現(xiàn)增值功能、突出用戶本位、適應事業(yè)發(fā)展放在重要位置, 同時要加強系統(tǒng)的擴展性、安全性和個性化[4]。周義剛、聶華結合北京大學圖書館的實際需求,提出了北京大學圖書館的需求框架[5]。如何開發(fā)能滿足時代要求和用戶需求的平臺,邵波、張文竹結合南京大學圖書館系統(tǒng)平臺的實踐討論下一代圖書館平臺的難點和對策[6];劉素清從用戶體驗視角進行研究,分析得出開源項目FOLIO的推出為圖書館服務平臺的選擇提供了新的思路,其核心目標是建設一個開源的、基于云服務的應用程序框架,以實現(xiàn)不同開發(fā)團隊之間的協(xié)作[7]。2018年,中國高等教育文獻保障系統(tǒng)(CALIS)新一代圖書館服務平臺聯(lián)盟成立,為基于FOLIO的新一代圖書館服務平臺建設打下了堅實的基礎[8]。結合讀者需求,抓住FOLIO發(fā)展、探索與應用的契機,2018年,北京大學圖書館運用基于FOLIO的微服務框架進行了閉架圖書叫號系統(tǒng)開發(fā),實現(xiàn)了通過開源程序來管理館藏資源和提升圖書館服務質(zhì)量的目標。同年,CALIS也運用FOLIO架構升級了CALIS館際互借系統(tǒng)。
2?微服務架構與FOLIO
2.1?單體架構、SOA與微服務架構
單體架構應用是功能集中、代碼和數(shù)據(jù)中心化、一個發(fā)布包、部署后運行在同一進程的應用程序。面向服務的架構(Service Oriented Architecture,SOA)是一個組件模型,它將應用程序的不同功能單元進行拆分,并通過這些業(yè)務系統(tǒng)之間定義良好的接口和契約聯(lián)系起來[9]。微服務(Micro-services)架構SOA有相同之處,在 SOA之上升華,是一些具有足夠小的粒度、能夠相互協(xié)作且自治的服務體系,每個服務僅關注于完成一個具體業(yè)務并能夠良好地完成該功能[10-12]。微服務架構強調(diào)的是業(yè)務徹底的組件化和“微”服務化,原有的單個業(yè)務系統(tǒng)會拆分為多個可以獨立開發(fā)、設計、運行的微服務,這些微服務之間通過API完成交互。
單體架構、SOA與微服務架構如圖1所示,SOA的總線是一根管道,用來連接各業(yè)務應用,為了集成不同的子系統(tǒng)、不同的協(xié)議服務,總線做了消息的轉化解釋和路由工作,讓不同的服務互聯(lián)互通。微服務中的API網(wǎng)關是一個獨立的服務,是系統(tǒng)的唯一入口,所有的客戶端和消息端都通過統(tǒng)一的網(wǎng)關接入微服務。不同的微服務間也是通過API進行輕量級通訊。單體架構、SOA與微服務架構在組件大小、耦合程度、團隊架構等方面的對比如表1所示。
微服務的特性使其在系統(tǒng)設計開發(fā)應用中具有一定的優(yōu)勢,并且越是在規(guī)模龐大的軟件項目中其優(yōu)勢越明顯[13]。優(yōu)勢包括:
(1)獨立性。不同的服務間耦合程度低,有明確的任務和功能。
(2)技術選擇靈活。服務間通過API進行通訊,開發(fā)團隊可根據(jù)自身情況,選擇適合的架構和開發(fā)語言。
(3)獨立部署。更便捷的借助容器(如Docker)獨立部署,且進程隔離[14]。
微服務架構自產(chǎn)生就被業(yè)界廣泛應用,例如,新型云件PaaS平臺[15]、統(tǒng)一應用開發(fā)平臺[16]、電力云服務平臺[17]、城市一卡通手機充值支撐系統(tǒng)等[18]。微服務架構也為新一代圖書館服務平臺的建設提供了新的思路。與此同時,在現(xiàn)有圖書館集成管理系統(tǒng)退出歷史舞臺到新一代圖書館服務平臺開始服務的過渡時期,可以基于微服務架構,將圖書館的新增服務統(tǒng)一設計、組織、管理。
2.2?FOLIO微服務架構
FOLIO(The Future of Libraries is Open)項目成立于2016年,由圖書館、開發(fā)者和服務提供方共同發(fā)起,并于2019年發(fā)布Aster版本 [19]。FOLIO平臺(見圖2)采用微服務架構[20],數(shù)據(jù)層支持PostgreSQL、Oracle、MongoDB等多種數(shù)據(jù)存儲技術;系統(tǒng)層主要負責索引、日志、租戶配置等;OKAPI是 FOLIO平臺的網(wǎng)關,負責租戶和APPs間的通信;應用層為應用程序,包括采訪、編目、流通等傳統(tǒng)模塊,以及支持擴展模塊;UI層可以運用React、VUE、Angular等技術開發(fā)用戶界面,以適應不同用戶在不同場景下使用的需求。其中OKAPI是FOLIO的核心,各業(yè)務功能被劃分成相互獨立的微服務,將RESTful API接口信息以及代理或托管信息提交到OKAPI。用戶訪問OKAPI HTTP服務,OKAPI通過接口URL確定用戶需要調(diào)用的API,然后通過代理或托管信息找到實際服務的地址,將請求轉發(fā)到實際服務的地址。
完整的FOLIO-APP的基本構成(見圖3)包括UI模塊、后端模塊和存儲模塊,UI模塊負責前端頁面交互,后端模塊負責業(yè)務邏輯,存儲模塊負責實現(xiàn)特定的持久化措施。服務型FOLIO-APP主要包含后端業(yè)務模塊和存儲模塊,業(yè)務邏輯型FOLIO-APP主要包含后端業(yè)務模塊,前端型FOLIO-APP主要包含UI模塊。
3?FOLIO在北京大學圖書館的實踐
北京大學圖書館閉架借書處一直使用讀者遞交索書單,工作人員按條找書的傳統(tǒng)服務方式,整個工作流程中存在著諸多困難。例如,有時讀者手寫不清、謄寫信息錯誤,導致工作人員分單取書困難;由于空間有限,部分外文圖書同一分類分放在不同的樓層,找書要依靠讀者查詢填寫?zhàn)^藏位置,如果讀者不清楚借閱規(guī)則,則不得不進行二次檢索,增加了借書難度;館藏查詢與借書時間不同步,讀者填寫索書單時圖書可能已經(jīng)是借出狀態(tài);讀者借閱的是非閉架圖書,卻誤到閉架借書處提交索書單,導致借書請求無法滿足等。針對這一系列問題,為了將閉架借書服務從線下手工作業(yè)流程提升到線上系統(tǒng)操作,北京大學圖書館開發(fā)了閉架圖書叫號系統(tǒng)(下文簡稱叫號系統(tǒng)),是基于微服務架構的FOLIO模塊建設的一次有意義的探索和實踐。
3.1?以用戶為中心的設計
以用戶為中心的設計(User-Centered Design),其核心思想就是在產(chǎn)品開發(fā)的每個階段都把用戶特征納入考慮的范圍。系統(tǒng)設計的初衷在于為讀者提供更便捷的借書方式、縮短獲取館藏資源的時間,同時減輕工作人員的工作量,并直觀分析用戶行為,為完善工作流程,進一步提升工作效率提供依據(jù)。叫號系統(tǒng)對現(xiàn)有流程做出了優(yōu)化調(diào)整,用戶與系統(tǒng)交互的流程如圖4所示。優(yōu)化后,讀者無需手工填寫索書單,查詢與提交請求一次完成,節(jié)省時間和精力,并省去了圖書館工作人員分單和索書單由運書電梯上行的環(huán)節(jié),簡化了借書流程,打印出來的索書單和索書號清晰準確,圖書定位準確,可借狀態(tài)準確,借書效率更高。
3.2?叫號系統(tǒng)架構與主要開發(fā)技術
在叫號系統(tǒng)的業(yè)務分析中,對叫號業(yè)務涉及到的統(tǒng)一認證、館藏檢索、叫號業(yè)務處理以及FOLIO的一系列基礎服務等環(huán)節(jié)進行相應的微服務的分解,不同微服務之間的關系是低度耦合的,單項微服務只負責單一任務,不同微服務之間通過RESTful請求通訊,在保證RESTful API穩(wěn)定的情況下,各模塊升級互不影響。其中,統(tǒng)一認證服務主要負責用戶的認證、身份信息、權限獲取,并通過發(fā)送RESTful請求的方式與FOLIO基礎服務中的用戶模塊進行通訊;館藏檢索服務主要負責與圖書館集成系統(tǒng)Symphony的通信、檢索以及檢索結果的處理;叫號業(yè)務處理服務主要負責讀者請求的建立以及處理等;FOLIO的基礎服務包括模塊認證、權限管理、用戶管理等。叫號服務在FOLIO平臺中的角色為應用層眾多應用(APP)中的一個應用,叫號服務與OKAPI的關系如圖5所示。
FOLIO的系統(tǒng)架構支持了前后端分離的開發(fā)方式,后端及存儲模塊負責業(yè)務邏輯,而前端模塊主要負責呈現(xiàn)、用戶交互等。從技術選型角度,F(xiàn)OLIO支持了多語言、多框架的技術,具有很高的靈活性、適應性、兼容性和可擴展性,不同模塊間互不影響,不同的開發(fā)團隊可以根據(jù)其技術棧選擇不同的技術。各技術和框架各有優(yōu)勢,在遵循FOLIO OKAPI支持的RESTful通訊模式,開發(fā)團隊可選擇適應業(yè)務流程所需的、團隊擅長的語言和技術框架,而不僅僅局限于FOLIO已經(jīng)使用的技術框架,例如FOLIO OKAPI運用Vert.x框架。FOLIO-APP結構與叫號系統(tǒng)采用的主要技術如圖6所示。
后端模塊支持多語言、多種技術開發(fā),例如Spring Boot、Nodejs、Django等,具有很強的靈活性,適應不同技術團隊的開發(fā)。叫號系統(tǒng)后端模塊運用RESTful開發(fā)模式,采用Spring Boot技術將業(yè)務邏輯包裝成RESTful API接口,與其他模塊進行RESTful模式通訊,叫號系統(tǒng)模塊的修改和升級不影響其他模塊,其他模塊在保證接口穩(wěn)定的情況下的升級和擴展同樣不影響叫號系統(tǒng)模塊,保證了平臺的兼容性和可擴展性。Spring Boot是由Pivotal團隊提供的框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發(fā)過程。該框架使用了特定的方式來進行配置,從而使開發(fā)人員不再需要定義樣板化的配置。與OKAPI的通訊采用代理模式,即OKAPI不負責模塊的運行,僅將請求轉發(fā)給指定的URL,后端業(yè)務模塊將API接口信息和代理信息提交給OKAPI。存儲模塊采用Mybatis和MySQL數(shù)據(jù)庫,MyBatis基于 Java語言的持久層框架,支持定制化 SQL、存儲過程以及高級映射,使用簡單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects)映射成數(shù)據(jù)庫中的記錄。
前端模塊采用React、Ant Design技術實現(xiàn)多終端的用戶交互界面。React起源于Facebook的內(nèi)部項目,由起始的JavaScript MVC框架擴展成一套前后端Web APP解決方案,主要用于構建UI,可適用于服務器、瀏覽器和移動終端,與Angular、VUE并稱為目前流行的三大開源UI框架。React的核心思想是封裝組件,各個組件維護自己的狀態(tài)和 UI,當狀態(tài)變更,自動重新渲染整個組件。在叫號系統(tǒng)前端模塊中,發(fā)揮前端控制層作用,并提供了前后端數(shù)據(jù)通訊的通道。Ant Design是螞蟻金服體驗技術部出品的基于React的UI庫,包含設計原則、控件規(guī)范和視覺尺寸以及配套的前端代碼實現(xiàn)方案等,滿足了多用戶適應不同終端的需求。
3.3?部署上線服務
叫號系統(tǒng)采用了前后端分離的開發(fā)方式,也支持了前后端分開打包部署的方式,前后端模塊可部署在相同或不同的服務上。叫號系統(tǒng)后端模塊運用Maven打包方式,可直接發(fā)布為可運行Jar包。前端模塊運用Webpack打包,生成若干個HTML、JS、CSS以及圖片等靜態(tài)文件。Nginx是一個輕量級的高性能的HTTP和反向代理Web服務器,具有支持高并發(fā)鏈接、占用內(nèi)存較小、配置文件簡潔、支持熱部署等優(yōu)勢。因此,將前端模塊部署到Nginx服務器,同時,為保障用戶在使用系統(tǒng)服務時的個人信息安全,運用Nginx服務器反向代理的方式啟用HTTPS服務。另外,叫號端采用了桌面虛擬化技術,通過終端設備連接到位于數(shù)據(jù)中心的虛擬桌面提供持續(xù)穩(wěn)定的服務,保證了叫號端的穩(wěn)定性。系統(tǒng)的部署采用了先進的技術,不僅使得部署過程便捷簡單,并且保證了服務的安全性和穩(wěn)定性。
4?系統(tǒng)應用數(shù)據(jù)分析
基于微服務框架開發(fā)的閉架圖書叫號系統(tǒng)強大的統(tǒng)計功能為提升用戶體驗、改進管理方式提供了數(shù)據(jù)支撐。叫號系統(tǒng)于2018年12月24日試運行,試運行當日完成了91冊圖書的借閱請求,自試運行開始至2019年9月30日,共計有10000余名讀者登錄系統(tǒng),產(chǎn)生了124000余條檢索(含翻頁)數(shù)據(jù)和37000余條圖書借閱請求數(shù)據(jù)。如圖7所示,96%的圖書借閱請求正常結束,可見讀者借到書的成功率較高,但仍有4%的請求異常結束,其中42%為讀者取消借閱申請,圖書未找到的占32%,逾期未取書的占26%。
完成借書流程時間指的是從讀者檢索提交借書申請到讀者拿到書完成整個借書流程的時間差(見圖8)。據(jù)統(tǒng)計,一位讀者最快33秒完成了整個閉架借書流程,1500余條請求在1分鐘內(nèi)完成,半數(shù)以上請求在6分鐘內(nèi)完成整個借書流程,80%的請求在12分鐘內(nèi)完成。
對讀者提交借書請求的時間進行分析,如圖9所示,10:00-11:00、12:00-13:00和15:00-16:00出現(xiàn)三個峰值,這與學生的課間休息和午餐時間基本相符;8:00-10:00與其他時段相比,借書請求數(shù)相對較少。分析得出的結論可為優(yōu)化工作流程提供指導,如工作人員可集中在早晨完成其他工作,如調(diào)整閉架圖書預約報表運行、處理時間和新書收登等工作,在借書請求峰值時段以服務現(xiàn)場借書讀者為主,減少讀者等待時間。
按讀者所借圖書的分類號進行統(tǒng)計分析,排名前10位的圖書類別如圖10所示,包括D(政治、法律)、T(工業(yè)技術)、I(文學)、B(哲學、宗教)、K(歷史、地理)、O(數(shù)理科學和化學)、F(經(jīng)濟)、H(語言、文字)、G(文化、科學、教育、體育)、C(社會科學總論)。這10類的借書請求數(shù)量占總請求數(shù)的87%,基本符合齊普夫定律,這一統(tǒng)計可為未來圖書館空間布局的調(diào)整和書庫排架設計提供參考。
5?微服務架構應用探索與思考
從叫號系統(tǒng)的技術原理和實踐過程中可見,微服務架構在當前圖書館轉型時期是一個較好的選擇。因其既可以針對一個具體的業(yè)務獨立開發(fā)和運用,也可以在同一開發(fā)模式下實現(xiàn)兼容和合作,既能滿足傳統(tǒng)圖書館管理系統(tǒng)的服務升級要求,又能匹配新一代圖書館服務平臺的多種要求。
5.1?微服務技術優(yōu)勢
(1)單一職責。FOLIO采用微服務架構是一種高度模塊化的設計,每個模塊只負責與本模塊相關的業(yè)務,當一個模塊進行升級和改造時,其他模塊的運行不受影響。例如,北京大學圖書館的統(tǒng)一認證采用了CALIS統(tǒng)一認證系統(tǒng),同時,北京大學校內(nèi)也支持IAAA的認證,如果認證方式進行了調(diào)整和修改,僅需對認證模塊進行改造,不影響其他模塊的運行,從理論上實現(xiàn)了熱插拔。
(2)輕量級通信。如上文所述OKAPI是FOLIO的核心,統(tǒng)一認證、檢索、叫號服務與FOLIO的一系列基礎服務分別作為獨立的“微服務”,通過托管或代理的模式將API接口提交給OKAPI,OKAPI對不同服務的API接口進行了統(tǒng)一管理。其他服務,例如送書上門服務也可包裝成一個獨立的微服務,通過相似的方式將API接口提交給OKAPI,對服務平臺進行擴展,運用RESTful的接口方式可實現(xiàn)不同模塊、不同微服務之間的通訊。
(3)技術多樣性。OKAPI通過認證租戶的方式,為各模塊、微服務提供模塊級別的權限控制。不同的微服務負責相對獨立的業(yè)務,邏輯與其他微服務關系是低度耦合的,可由不同的開發(fā)團隊運用不同的編程語言、不同的技術框架,并可獨立部署,搭建在不同的物理或虛擬服務器上,形成服務云,僅需遵循RESTful的開發(fā)方式即可實現(xiàn)不同服務間的通訊。例如,F(xiàn)OLIO OKAPI運用Vert.x框架,叫號系統(tǒng)后端使用了Spring Boot框架,兩個模塊分別由不同團隊開發(fā),選擇了不同的技術,部署在不同的虛擬服務器上,但配合良好,體現(xiàn)出微服務架構的優(yōu)勢。
(4)獨立性。FOLIO的系統(tǒng)架構支持了前后端分離的開發(fā)方式,這種開發(fā)方式不同于傳統(tǒng)前后端作為一個統(tǒng)一的整體的開發(fā)方式,前端和后端的開發(fā)相對獨立,在開發(fā)前期對接口進行描述,前端和后端開發(fā)可同時進行,互不干擾。與此同時,后端模塊將API接口提交給OKAPI,API接口由OKAPI統(tǒng)一管理,前端請求發(fā)送給OKAPI,由OKAPI做請求的統(tǒng)一分發(fā)而不必考慮服務的物理、虛擬服務器的具體位置、IP等,因此,前端模塊在發(fā)送請求時對后端是否為同一微服務不敏感,對不同微服務提交的API接口進行請求發(fā)送采用的方式基本相似,這樣提高了前端開發(fā)的靈活性,降低了前后端的耦合度,為開發(fā)提供了便利。綜合對系統(tǒng)架構的分析和微服務的拆分與開發(fā)應用,可以看出基于微服務架構的FOLIO模塊建設中充分體現(xiàn)出新一代圖書館服務平臺的平臺化、開放性、易擴展性、云端化等特征。
5.2?微服務應用場景
雖然北京師范大學圖書館、清華大學圖書館分別于2017年、2018年上線了下一代圖書館服務平臺,但大部分高校圖書館仍處在“老系統(tǒng)”向“新平臺”的過渡時期,且在短時間內(nèi)無法完成新老系統(tǒng)的更替。與此同時,隨著互聯(lián)網(wǎng)時代的到來,用戶的需求出現(xiàn)爆發(fā)式增長,圖書館因原有系統(tǒng)存在的一系列問題,在面對新需求時顯得捉襟見肘,在提供新服務的同時,對舊有系統(tǒng)的生命周期會有所顧慮?!袄舷到y(tǒng)”一旦終止服役,新的服務是否會受到影響?影響程度如何?“老系統(tǒng)”終止服役的正確時機又在何時?
微服務架構的設計有可能最大程度地解決這一問題,將新的服務與舊有系統(tǒng)通信的部分包裝成為獨立的服務,進行數(shù)據(jù)獲取、業(yè)務處理等,并向新服務提供RESTful API,當新老平臺進行切換時,運用同樣的API接口,僅需對此服務進行切換,對新服務影響不大。例如叫號系統(tǒng)中,圖書檢索模塊運用了基于Symphony Web Service的基礎檢索功能,但用戶對檢索結果的滿意度不高,當圖書館替換集成系統(tǒng)Symphony或升級改造檢索功能時,僅需對檢索模塊進行獨立的升級即可。
同樣,“老系統(tǒng)”中部分模塊已經(jīng)不能適應現(xiàn)有的業(yè)務邏輯,但其他模塊仍可繼續(xù)穩(wěn)定服役,同樣可以重新組織業(yè)務邏輯,并將與“老系統(tǒng)”的交互部分進行服務化,從而把業(yè)務從“老系統(tǒng)”中替換。依照這一思路,可以逐步分割“老系統(tǒng)”的功能,一方面適應新的業(yè)務需求,另一方面,“老系統(tǒng)”將會變得越來“瘦”,實現(xiàn)“老系統(tǒng)”向“新平臺”的穩(wěn)步過渡。即使新一代圖書館服務平臺選擇了商業(yè)產(chǎn)品,對于擴展的新服務同樣可以采用微服務的架構進行擴展,運用FOLIO的方式方法將這些服務進行統(tǒng)一管理。
基于微服務架構的FOLIO模式,不僅適用于新一代圖書館平臺,同樣可以管理“周邊”服務。圖書館并非只有圖書館集成系統(tǒng)或新一代圖書館服務平臺,還有一系列的“周邊”服務系統(tǒng),少則幾個,多則幾百個,這些系統(tǒng)由不同的廠商或圖書館自身進行開發(fā),采用不同的技術架構,再加上有些服務的開發(fā)商已經(jīng)不存在,或者當初負責開發(fā)的圖書館員存在調(diào)離等情況,使得后續(xù)的系統(tǒng)運行和維護困難重重。而基于微服務架構的FOLIO模式,不僅適用于新一代圖書館平臺,同樣可以把這些“周邊”服務進行統(tǒng)一管理和運行維護。服務可以由不同的團隊采用不同的技術進行開發(fā),僅需遵循RESTful的通用開發(fā)模式,將接口交于OKAPI統(tǒng)一管理。
5.3?圖書館角色的轉變
圖書館集成管理系統(tǒng)提供的服務是圖書館傳統(tǒng)服務的核心,包括采訪、編目、流通等業(yè)務,并且業(yè)務流程與系統(tǒng)流程是高度耦合的。然而,大多數(shù)商業(yè)產(chǎn)品的系統(tǒng)流程,特別是境外公司的圖書館集成管理系統(tǒng),與國內(nèi)圖書館的業(yè)務流程或多或少都存在差異,尤其是采訪模塊,用外來的系統(tǒng)流程適應本地業(yè)務流程是一件相對困難的事情。
而基于微服務架構的開源平臺方式讓圖書館從被動的使用方轉化為主動的需求方,擁有很高的自主選擇權。圖書館可以提出符合自己業(yè)務流程的需求,交由開發(fā)方進行開發(fā),或者在已有的模塊中選擇適合自己業(yè)務流程的模塊。同時,本身具有開發(fā)能力的圖書館,也可以進行模塊的自主開發(fā),僅需遵循相應的規(guī)則,選擇適合的開發(fā)語言和技術框架。
6?總結與展望
在互聯(lián)網(wǎng)技術爆炸的背景下,社會正經(jīng)歷著方方面面的重大的、影響深刻的變革,圖書館也正在經(jīng)歷這些變革。變革影響到傳統(tǒng)圖書館提供的服務內(nèi)容、服務方式,促使圖書館自身不斷努力提高對技術的應用。變革也影響到圖書館的用戶,用戶學習方式和行為習慣的改變要求圖書館提供的服務和新技術的應用要相互滲透和融合。只有進一步構建便于用戶檢索和利用文獻的平臺,才能充分利用館藏資源為廣大讀者提供便捷的服務。微服務架構、FOLIO等的出現(xiàn)為解決這一問題提供了新的思路。北京大學圖書館閉架圖書叫號系統(tǒng)的設計、開發(fā)及上線為圖書館贏得了用戶,幫助圖書館樹立了新的形象。
首先,叫號系統(tǒng)針對不同用戶需求在設計和實踐的過程中對FOLIO架構進行了分析和研究,兼顧了現(xiàn)役圖書館集成系統(tǒng)Symphony、現(xiàn)有工作流程和新一代圖書館服務平臺的新理念、新技術。在“老系統(tǒng)”向下一代平臺的過渡時期,叫號系統(tǒng)運用FOLIO的技術和平臺較好地滿足了新時代的用戶需求,更好地解決了“老系統(tǒng)”不能解決或者極難解決的問題。運用微服務架構技術,新老平臺的更替對叫號系統(tǒng)等新建設的系統(tǒng)影響不大,從理論和實踐上,實現(xiàn)了新老平臺的平穩(wěn)過渡,為其他圖書館解決此類問題提供了思路。
其次,在設計和開發(fā)的過程,雖然叫號系統(tǒng)作為一個較小的應用,但打通了基于微服務架構的FOLIO模塊開發(fā)的整個流程,打通了各技術開發(fā)示例,實現(xiàn)了各模塊之間的輕量級通訊,并且擴展性較好,對實現(xiàn)技術的依賴性較小,微服務部署在不同的物理或虛擬服務器上,同時,不同的微服務由OKAPI統(tǒng)一管理,有效解決了各項服務分散運行和維護的問題,證明了FOLIO的平臺化、開放性、易擴展性、云端化等優(yōu)勢,為新一代圖書館服務平臺的設計和建設提供了范例。
叫號系統(tǒng)是圖書館運用FOLIO的一次探索,但也存在一些不足,在自動化部署和輕運維方面還未進行討論和嘗試,且叫號系統(tǒng)相對新一代圖書館平臺來說是一個相對較為簡單的模塊,未涉及FOLIO處理復雜業(yè)務的實踐。下一步的工作應主要包括實現(xiàn)系統(tǒng)的自動部署和輕運維工作以及非開架圖書的統(tǒng)一管理等,向構建個性化的新一代圖書館服務平臺邁進。
參考文獻
1?殷紅,劉煒.新一代圖書館服務系統(tǒng):功能評價與愿景展望[J].中國圖書館學報,2013,39(5):26-33.
2?肖錚,林俊偉.用微服務構架下一代圖書館服務平臺——以FOLIO為例[J].圖書館雜志,2018,37(11):63-69.
3?陳武,王平,周虹.下一代圖書館服務平臺初探[J].大學圖書館學報, 2013,31(6):82-87.
4?吳建中.人·技術·價值觀——關于下一代圖書館技術的思考[J].圖書館,2019(4):1-4.
5?周義剛,聶華.新一代圖書館服務平臺調(diào)研及思考——基于北京大學圖書館的需求[J].圖書館雜志,2019,38(2):69-78.
6?邵波,張文竹.下一代圖書館系統(tǒng)平臺的實踐與思考[J].圖書情報工作,2019,63(1):98-104.
7?劉素清.基于用戶館體驗視角的圖書館服務平臺選擇思考[J].圖書情報工作,2018,62(14):49-54.
8?CALIS.CALIS新一代圖書館服務平臺聯(lián)盟[EB/OL].[2019-02-20].http://community.calis.edu.cn/index.html.
9?惠瀾,殷環(huán)環(huán),顧燁青.“面向未來的圖書館事業(yè)和圖書館學發(fā)展研究”高端論壇綜述[J].大學圖書館學報,2019,37(3):5-12.
10?Thnes J. Microservices[J],IEEE Software,2015,32(1):1-116.
11?鄭天民.微服務設計原理與架構[M].北京:人民郵電出版社,2018:9.
12?王磊.微服務架構與實踐[M].北京:電子工業(yè)出版社, 2015:39.
13?李貞昊.微服務架構的發(fā)展與影響分析[J].信息系統(tǒng)工程,2017(1):154-155.
14?鄧杰文,曹彩鳳.微服務若干關鍵問題研究[J].五邑大學學報(自然科學版),2016,30(2):49-54.
15?郭棟,王偉,曾國蓀.一種基于微服務架構的新型云件PaaS平臺[J].信息網(wǎng)絡安全,2015(11):15-20.
16?李春陽,劉迪,崔蔚,等.基于微服務架構的統(tǒng)一應用開發(fā)平臺[J].計算機系統(tǒng)應用,2017,26(4):43-48.
17?楊俊偉,紀鑫,胡強新.基于微服務架構的電力云服務平臺[J].電力信息與通信技術,2017,15(1):8-12.
18?溫曉麗,蘇浩偉,陳歡,等.基于SpringBoot微服務架構的城市一卡通手機充值支撐系統(tǒng)研究[J].電子產(chǎn)品世界,2017,24(10):59-62.
19?FOLIO.Open source library services platform[EB/OL].[2020-03-11].https://www.FOLIO.org/.
20?Murray P.FOLIO Wiki[EB/OL].[2020-03-11]. https://wiki.FOLIO.org/.
作者單位:北京大學圖書館,北京,100871
收稿日期:2019年10月8日
修回日期:2020年3月12日
(責任編輯:關志英)
Exploration and Practice of FOLIO Module Construction Basedon Microservice Architecture
—The Case of the Queue Management System of Closed Stacks of Peking University Library
Wang Haoxian?Zhou Yigang?Zhang Naishuai?Zhang Juan
Abstract:With the transformation and upgrading of the traditional integrated library systems, how to connect the old system and the new service to meet the demand of library development and reader service becomes a technical challenge. To explore the micro-service and FOLIO architecture, this article takes the queue management system of closed stacks of Peking University Library as object to introduce the design ideas, system architecture and technology usage. Besides proposing an improved method of library services based on analysis of the database operations of the system, this article also discusses the technical advantages, application scenarios of micro-service architecture and the changing of library roles under this architecture. Finally, it suggests that the micro-service applied on library service and management is innovative.
Keywords:FOLIO; Micro-service Architecture; Peking University Library; Queue Management System