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 developed an extensive library of plugins (bundles) of our own code, this provides us with the opportunity to deploy new projects on pre-prepared modules within several hours.
NodeJS – a tool, which we often use to write scripts in projects.
MySQL is our primary choice when it comes to development of projects of average complexity. Whenever we are required to work with transactions, financial logic, statistics and cartography, we use PostgreSQL. Whenever we need massive reads from database and a few writes we use MongoDB. Redis – a simple and effective solution for data caching. In technologically complex projects we use a mix of different databases, leveraging the strengths of each.
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
Recently development of front-end components has changed, and now there are many new tools for code optimization, speed and effective development. For most of our projects we use Require.js, WebPack and Handlebars.js.
Backbone.js – a library, which we use as a foundation for development of 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 the repository, and the developer sees if his changes affects any other parts of the code.
Behavior driven development (BDD) is mostly used 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 gives us confidence that we have written optimal and quality code.
Varnish – an http caching server for faster page loading. In some cases, it may give an increase of 20-50 times and save the 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. Newrelic allows us to check performance and find bottlenecks in the architecture of the project. We perform load testing and make sure that the project functions under the load required by the customer.
Sentry – error logging. Allows us to locate and log errors automatically. By installing this tool on each project after its implementation and launch, we can monitor and then eliminate bugs after release.