社区中心
Advertisement

想一想你在Wikia上可以做的所有事情:編輯文章,和其他用戶在線聊天,收集勳章,組織內容,或者是花幾個小時不停地閱讀你所感興趣的話題。 在我們360,000個社區上,每一個社區都擁有獨立的設計和內容,你可以看到它們各具特色。

我們的社區就是建立在這些內容之上。雖然如此,社區看不到的確是這種多樣化給我們的工程師和產品經理編碼帶來巨大的挑戰。在過去的許多年裏,我們已經建立了一個龐大的代碼數據庫。

許多年前,我們經驗豐富的工程師聚集在一起,開始思考是否有一種方式可以砍掉代碼庫。他們希望看到是否有一種簡單的方式對代碼進行維護以保證Wikia的功能都能正常使用。 這樣做我們可以讓軟件的開發工作進展更快並且更加有效率。 很高興地告訴大家,我們已經取得了巨大的進步!

解決的方法被稱為服務導向架構(SOA)。作為一名維基編輯用戶以及一名公司的程式設計師,我很希望和大家分享這種方法以及Wikia軟件發展的幕後工作。

專業詞彙[]

City (Civ3)

假設MediaWiki是一座城市

為了更好的理解Wikia的技術是如何更新的,讓我們先定義一下一些重要的概念。

MediaWiki: MediaWiki是我們自2006 年構建Wikia以來的主要源動力。MediaWiki是wiki概念創造中不可或缺的一部分,它可以讓編輯變的非常簡單,讓用戶創建的內容可以得到很好的呈現,用戶群組框架簡單,並且能夠追蹤編輯的歷史。

Wikia使用的MediaWiki版本為1.19,我們可能不會再大規模地更新到一個最新版本。 一個主要的原因就是MediaWiki是一個龐大的軟件系統。 包括MediaWiki代碼、設計和其他技術元素掌控一切。 比如,讓你保存文章頁面的功能,也同樣適用於刪除文章頁面的功能。 這些大量工作主要是通過PHP和JavaScript完成的。

在技術上,一種服務通常情況下只是軟件中的一個小的部分,它只負責單一的、通用的任務。 它適用於任何語言。 因此,服務導向架構就是一種允許所有網頁通過單一服務的共同作用而完成任務的設計系統,而不是一個可以完成所有任務的單一龐大軟件。

問題是什麼?[]

為了試圖明白SOA模型和MediaWiki模型的區別並且更好地利用SOA,讓我們假設MediaWiki是一座城市。所有的城市居民都負責城市的所有業務,無論是建築,或是警務,亦或是售貨。 城市或許可以很好地發展,但是一旦某處開始着火,一個售貨員,警務人員,或者建築工人都將一起跑來滅火,而不是依靠消防隊員專業的進行滅火。

如此類推,讓我們看一下服務導向架構模型是如何工作的。在一座城市裏,居民只負責單一的一種事務,比如建築,警務,或者售貨。 他們將集中注意力做一項事情。如果哪裏着火了,消防員將去現場進行滅火。 我想你應該和我一樣,如果房子着火了,比起一個麵包師,我會更加信任消防員的滅火技能。 雖然這個滅火的例子可能有些聳人聽聞,聽起來很好笑,不過事實的確就是這樣。

這個例子就是對為什麼Wikia需要轉換到SOA的一種最好解釋。 SOA和核心MediaWiki優勢對比:

  • 簡單性 對一個軟件工程師來說,如果範圍較小、代碼只儲存在一個地方,他們就非常容易進行處理、修復或者提高某個軟件性能。 SOA可以讓我們更好地使用編程語言,不如Java或者Python,對處理某些PHP不能處理的任務也非常方便。
  • 適應性 MediaWiki的龐大讓它的更新速度變的非常緩慢。 另一方面,互聯網變化非常快。 MediaWiki經常落後於一些必要的功能,比如手機App發展方面。

哪些方面將有變化?[]

如果你知道Wikia在過去的幾年裏已經悄無聲息地把一些功能轉換到SOA模型,你可能會有些驚訝。使用SOA模型並不意味着你會看到一個浮誇的Wikia。SOA將抓取MediaWiki的某些功能,重建更加高效的代碼,然後將代碼重新放回原來的地方。雖然重寫代碼可能需要我們添加一兩項新的功能,但是你基本上看不到任何明顯變化。

一個非常好的例子就是我們現在的登入系統。無論您信不信,去年這項功能已經有了巨大的變化!比如在傳遞用戶數據庫或簡單和Facebook賬戶連接的問題上,MediaWiki用戶身份驗證系統並不能有效地發揮作用。 從去年開始,我們開始設計一種東西叫做Helios,它將允許一種更加安全和快速的註冊和登入過程。 Helios是在MediaWiki之外獨立運行的,並且通過簡單API和MediaWiki進行對接。

另外,我們還創建了一種專門針對用戶群組權限和個人設置的服務。 這種技術的發展已經運用到了手機App和手機界面上。 事實上,我們已經可以使用Helios讓用戶更好地登錄Wikia的手機界面和App,它比將MediaWiki驗證系統嵌入到手機工具的方法更加簡便。

這只是讓我們的Wikia系統變的更加有效的第一步。 它將允許我們更好地設計新的功能和代碼系統,讓Wikia在未來更好地發展。 如果你對Wikia服務導向架構模型的發展有任何問題,你可以在這裏提問,我們的員工將一一回答!

Advertisement