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