Pikacode

Git and mercurial hosting

gravatar meister Nov. 1, 2012, 3:05 p.m. 0

Pikacode technology stack

"Release early. Release often. And listen to your customers" (Eric S. Raymond, The Cathedral and the Bazaar) is our leitmotiv at Pikacode. You have to carefully choose your technology stack to follow that guideline.


Python


Fast and clear development. Most of our critical components contains less than a hundred lines of code such as http or ssh server for git and mercurial remote operations. Little code means lesser bugs and maintenance and adding features is easier too. Python ecosystem with Pip (http://pypi.python.org/pypi) is rock solid and upgrading dependencies works like a charm. We are using virtualenv (http://pypi.python.org/pypi/virtualenv) to isolate our applications.


Django and others pythonic components


If you choose python for your development, one of the best framework is Django. It is full of features for rich websites and easily extendable. There are libraries for every of your needs. Upgrade are easy and does not break your applications.


Background tasks are handled by Rabbitmq (http://www.rabbitmq.com) integrated with Celery (http://celeryproject.org/). We are using background jobs for processing consuming operations like statistics computations, heavy repository operations such as creating tarball for repository downloads. Javascript code query background task status and display final result to users.


Bootstrap css framework


If you are a developer and your skills in webdesign are rather low, css frameworks can help you for providing a sleek GUI for user experience. Bootstrap is one of best framework for a consistent design of your web applications (http://twitter.github.com/bootstrap/).


Webservers and sysadmin stuff


The most critical layer is the http one, here are some information of your low level technology web stack. We are using gunicorn (python WSGI http server http://gunicorn.org/) to serve django requests. Nginx is our webserver of choice. Varnish handles the http cache layer. Uwsgi and custom python WSGI servers handle http remote operations.


Supervisord (http://supervisord.org/) manages our running processes and Nagios checks all our services.


Conclusion


Our whole stack is versionned in Mercurial repositories (self-hosted on Pikacode) and everything is deployed with the help of custom Fabric scripts (http://docs.fabfile.org/). Pushing code in production is achieved with a single command.


Add a comment

Recents posts

RSS
Security history page
meister on Dec. 9, 2013, 1:02 a.m.
Pikacode technology stack
meister on Nov. 1, 2012, 3:05 p.m.
Fork a repository
meister on Oct. 21, 2012, 6:48 p.m.
14 free days discount
meister on Oct. 13, 2012, 4:11 a.m.