Languages and frameworks
Symfony 2 – ultra-modern and one of the world's most popular MVC framework. This enterprise-level platform provides a high level of quality, reliability and speed. Most of the projects that we have done in the past three years were written in Symfony. During this time we have created our own library of plugins (bundles) and now are able to deploy new projects on prepared modules within several hours.
NodeJS – tool, which we often use to write scripts in projects.
MySQL is our main choice in development of average complexity projects. When the work with transactions, the financial logic, statistics and cartography are required, we use PostgreSQL. MongoDB we take as a tool in cases where we need massive reads from database and a few writes. Redis – simple and effective solution for data caching.
In technologically complex projects we use a mix of different databases, leveraging the strengths of each.
MySQL (MariaDB, Percona) MongoDB PostgreSQL Redis
JS-frameworks and libraries
Lately development of front-end components has changed, and now there are many new tools for code optimization, speed and effective development. On most projects we use Require.js, WebPack and Handlebars.js.
Backbone.js – a library, which we use as a basis for development of a single-page applications.
The project (the most important parts or the whole code) is covered by unit-tests and functional tests for the frontend. We use a Continuous Integration approach, where tests are run automatically each time the code is updated in repository, and developer sees if his changes affects the other parts of the code.
Behavior driven development (BDD) most often we use in Agile projects, where written tests allow you to control the integrity of the project and to conduct quick changes without losing quality.
GitLab CI Selenium phpUnit Behat Mink
When you need a large amount of filtering or searching by morphology, the standard database search is inefficient. Search engines Sphinx Search and Elastic Search create index, therefore search and filtering performed quickly and without overloading server resources.
Blackfire – using Blackfire we measure performance of written components and applications. Tracking metrics throughout the development makes us confident that we have written optimal and quality code.
Varnish – http caching server for faster page load. In some cases, it may give an increase of 20-50 times and save server from crashes under load.
NGINX – web server, de facto standard in working with large projects.
Newrelic – a set of tools for measuring work speed and errors. Using it we check performance of and find bottlenecks in the architecture of the project. We perform load testing and make sure that the project keeps the load required by the customer.
Sentry – error logging. It allows you to catch errors in the automatic mode. We install this tool on each project after its implementation and launch, and we can see the situation with bugs on the project after its release.