
350
|
第十二章
Python 在 Smesh 的角色
我們廣泛地使用 Python —平台與服務的大部分都是以 Python 打造的,Python 所提供的
各種程式庫、工具,和框架讓我們全面地將它運用在工作上。
那種多樣性讓我們能夠(希望)為我們的工作挑選合適的工具。例如,我們已經使用
Django、Flask 與 Pyramid 建立 app,每個工具都有它的優點,我們能夠針對手頭上的
工作挑選正確的工具。我們使用 Celery 處理任務;使用 Boto 與 AWS 互動;並且使用
PyMongo、MongoEngine、redis-py、Psycopg 等來處理我們的各種資料需求。種種例
子,不勝枚舉。
平台
我們的主要平台包含為資料輸入、過濾、聚集、及處理提供掛鉤(hook)的中央 Python
模組,以及各種其他的核心功能。專案特定的程式碼從該核心匯入功能性,然後實作更
具體的資料處理與視圖邏輯,根據每個應用程式的需要而客製化。
目前為止,這個平台運作得相當順利,讓我們無需重複花費很多功夫,就能夠建造從各
種來源擷取及處理資料的複雜應用程式,然而,它也不是沒缺點—每個應用程式皆倚賴
共用的核心模組,使得更新該模組的程式碼以及讓使用它的應用程式維持在最新狀態,
變成是一項最主要的任務。
我們目前正在執行專案,重新設計該核心軟體,並且將它改變成服務導向的架構
(service-oriented architecture,SoA)。隨著平台成長,尋找正確時機進行這種架構更
動,似乎是大多數軟體團隊會面臨的巨大挑戰之一。將元件打造成個別服務有它的成本 ...