Posts Tagged ‘php’
Infrastructure
February 4th, 2010 Posted 11:55 am
It is very common for us when we talk to customers and attend events for people to ask us questions about our infrastructure and the rationale behind our choices. It is a very common question in the startup ecosystem for different reasons such as getting the feel for the company’s profile or as a source of inspiration for people’s projects.
This post goes into detail on our entire development stack from top to bottom.
At a glance:
- Source Control: Subversion
- Programming Language and OS: PHP on Ubuntu
- Framework: Zend
- Javascript Library: jQuery
- Programming IDE: Eclipse
- Build System: Phing
- Data Base Management System: PostgreSQL
- Backup and Restore: Backup Ninja and GPG
More detailed:
There are many choices here and all are supported with very good arguments. based on our organizational structure and the decision to support linear development (which means minimal branching), the choice was for traditional source control tools (instead of distributed ones such as GIT/perforce). Because of extensive exposure to subversion and it’s general acceptance, we chose this.
Because we are a SaaS company and we generally prefer using services, we also have an on-line hosting package for it.

This is a very open discussion and there is a nice chapter titled “So Many Platforms, So Many Options”, from The Web Startup Sucess Guide, by Bob Walsh. We had decided before to use PHP on top of linux. Our distribution of choice is ubuntu, with which we are very familiar.
In PHP, the choices are really endless. We chose Zend Framework for the following reasons:
- Familiarity: already used it in (smaller) projects in the past
- Leverage as much or as little of it as we want
- Supplementary tools available as we upscale, such as the rest of the Zend platform
The best element inside the Zend framework is that a software house can use as many features of it as they want, without getting into trouble. You can use the MVC, or you can just do it on your own with mod-rewrites. This goes all along the framework, which is good both in terms of being able to do custom development on what we needed different, as well as a smaller learning curve: when the project had to do some things urgently, the fastest approach was taken, and then when familiarity and exposure to the framework was better, we re-implemented those features in the framework’s ontology.

jQuery Simple, easy choice
. Better supported, large user base, ease of use, number of plugins, nice and diverse community (eg. designers, coders, etc). We could not have thought of anything else, although we considered MooTools because of the Zend Framework integration.
Given the rest of the choices, the options available are limited, so we used Phing for build automation.
![]()
There are many custom builds for Eclipse, our main one is the following: Eclipse for PHP Developers, which is tailored to our needs and has nice features such as code completion, subversion integration and many others.
We also use Komodo edit from Active state, which may be a good candidate for a future IDE. Both of those are cross platform. In each developer’s platform the following mini-IDEs/editors are utilized:
- Linux: geany and gEdit
- OS-X: TextMate
- Windows: Textpad

There is a very old post about that here. Many things have changed since then, but the choice remains the same: PostgreSQL. Now I have more arguments in favour of it:
- Cohesive and easy to find documentation
- Clear licensing – see what’s going on with MySQL/Sun/Oracle
- Feature Set
But most of all it is very dependable and stable. I know that it is not the most popular choice and that we have issues with software that runs on top of MySQL only, but we are very happy and confident for our choice and no company can take it away from us.

We chose Backup Ninja because it had a very small learning curve.
We might evaluate more options in the future, when we re-evaluate our backup strategy. Also
Gnu Privacy Guard is being use to encrypt the backups so that they can be transmitted and stored remotely.
Tags: eclipse, framework, ide, jquery, php, postgresql, subversion, ubuntu, zend
Posted in Technical discussion


