我們Pikacode公司的技術選型
“及早發布。頻繁發布。聽取客戶的意見”(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://推ter.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 ]
來自:http://www.aqee.net/pikacode-technology-stack/