Pikacode公司技術選型成功方案
“及早發(fā)布。頻繁發(fā)布。聽取客戶的意見”(Eric S. Raymond, The Cathedral and the Bazaar)是我們Pikacode公司的主導方針。開發(fā)中的技術選型必須認真的遵循這個指導原則。
Pikacode公司Logo
Python
快速且整潔的開發(fā)。大部分我們的關鍵組件,如為git提供服務的http或ssh server以及mercurial遠程操作,都只有不到幾百行代碼。更少的代碼意味著更少的bug和更少的維護量,增加新功能也變得容易。Python生態(tài)系統(tǒng)和Pip(http://pypi.python.org/pypi)非常穩(wěn)固,這使系統(tǒng)依賴模塊的升級變得輕而易舉。我們使用virtualenv (http://pypi.python.org/pypi/virtualenv)來隔離我們的各個應用。
Django和其它的python相關組件
如果你選擇使用python來開發(fā),那***的一個框架就是Django。Django擁有所有開發(fā)多功能網站的需要的特征,并且易于擴展。你需要的所有程序庫它都能提供。升級簡單而且不會影響你的應用。
后臺任務由Rabbitmq (http://www.rabbitmq.com)集成Celery (http://celeryproject.org/)來處理。我們使用后臺調度程序來處理好資源的操作,例如統(tǒng)計計算,壓縮下載等高負擔的存儲操作。用Javascript查詢后臺任務狀態(tài),向用戶顯示最終狀態(tài)結果。
Bootstrap css框架
如果你是做開發(fā)的,且你的web設計方面的技術非常差,CSS框架能幫助你開發(fā)出一個用戶體驗非常好的漂亮的界面。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負責監(jiān)控我們所有的服務。
結論
我們所有的程序都由Mercurial進行版本管理(我們自己搭建的服務),所有程序的部署都用過定制的 Fabric 腳本 (http://docs.fabfile.org/)進行。通過一條命令來把代碼推入產品環(huán)境中。