我們Pikacode公司的技術選型

aqee發表於2012-11-14

  “及早釋出。頻繁釋出。聽取客戶的意見”(Eric S. Raymond, The Cathedral and the Bazaar)是我們Pikacode公司的主導方針。開發中的技術選型必須認真的遵循這個指導原則。 

Python

  快速且整潔的開發。大部分我們的關鍵元件,如為git提供服務的http或ssh server以及mercurial遠端操作,都只有不到幾百行程式碼。更少的程式碼意味著更少的bug和更少的維護量,增加新功能也變得容易。Python生態系統和Pip(http://pypi.python.org/pypi)非常穩固,這使系統依賴模組的升級變得輕而易舉。我們使用virtualenv (http://pypi.python.org/pypi/virtualenv)來隔離我們的各個應用。

Django和其它的python相關元件

  如果你選擇使用python來開發,那最好的一個框架就是Django。Django擁有所有開發多功能網站的需要的特徵,並且易於擴充套件。你需要的所有程式庫它都能提供。升級簡單而且不會影響你的應用。

  後臺任務由Rabbitmq (http://www.rabbitmq.com)整合Celery (http://celeryproject.org/)來處理。我們使用後臺排程程式來處理好資源的操作,例如統計計算,壓縮下載等高負擔的儲存操作。用Javascript查詢後臺任務狀態,向使用者顯示最終狀態結果。

Bootstrap css框架

  如果你是做開發的,且你的web設計方面的技術非常差,CSS框架能幫助你開發出一個使用者體驗非常好的漂亮的介面。Bootstrap是最好的一個框架,能幫助你設計出風格一致的web應用。(http://twitter.github.com/bootstrap/).

Web伺服器和管理員工具

  最關鍵的技術層是HTTP相關的,下面這些資訊是關於底層web技術選型的。我們使用gunicorn (python WSGI http server http://gunicorn.org/)來服務django請求。Nginx是我們的web伺服器。用Varnish來處理http快取。Uwsgi 和 定製的ython WSGI servers來處理http遠端操作。

  Supervisord (http://supervisord.org/) 管理我們所有的執行程式,Nagios負責監控我們所有的服務。

結論

  我們所有的程式都由Mercurial進行版本管理(我們自己搭建的服務),所有程式的部署都用過定製的 Fabric 指令碼 (http://docs.fabfile.org/)進行。通過一條命令來把程式碼推入產品環境中。

  原文連結:Pikacode technology stack

相關文章