Используемые технологии в разработке

Мы стремимся использовать современные методологии и технологии в разработке ПО. Это позволяет добиваться лучших результатов и обеспечивает более высокую сопровождаемость проектов.

На бэкенде в большинстве проектов мы используем язык программирования Ruby и фреймворк Ruby on Rails, в качестве слоя хранения —  СУБД PostgreSQL, для поиска — ElasticSearch, а кеширование и очереди реализуем на базе Redis. Эта связка особенно хорошо зарекомендовала себя в разработке высоконагруженных ecommerce-проектов и в создании приложений со сложной бизнес-логикой.

Впрочем, решениями на базе Ruby мы не ограничиваемся, так как выбор технологий должен быть целесообразным и основываться на специфике решаемых задач. В проектах, связанных с машинным обучением и большими данными, мы чаще всего используем Python, так как возможности этого языка и его экосистема более подходящие для этого класса задач.  Для наиболее нагруженного функционала используем язык Go, так как он компилируемый и благодаря этому по производительности обгоняет интерпретируемые Ruby и Python.

Интерфейсы разрабатываем на базе HTML5, CSS3 и JavaScript, используя современные системы сборки и компонентную архитектуру. Как правило, мы делаем приложения в виде Single Page Application Фронтэнд обычно делается на связке React + MobX + MobX State Tree, а на бэкенд большую часть запросов обрабатывает в режиме API, хотя и реализует полноценный Server Side Render для соответствия SEO-требованиям и для ускорения отрисовки страниц при первой загрузке.

На серверах у нас операционные системы семейства Linux, в основном дистрибутивы CentOS. У нас собственные «железные» сервера и виртуализация, построенная на KVM, что позволяет эффективно использовать вычислительные ресурсы и спасает от типичных проблем VPS — «оверселлинга» и «шумных соседей». В качестве веб-сервера у нас используется NGINX, конфигурирование осуществляем через Ansible, а для мониторинга используется Zabbix. В качестве системы контроля версий используем Git, система управления репозиториями кода и платформа CI/CD — GitLab (self-hosted).

Используемый стек технологий позволяет создавать отличные решения для широкого спектра бизнес-задач и под самые жёсткие требования.

Мы используем технологии, которые хорошо зарекомендовали себя в «боевых» условиях. 

При выборе технологического стека для проектов мы всегда основываемся на двух основных критериях — эффективности и экономической целесообразности.

Основные технологии

Обычно мы используем в проектах этот набор технологий:

Язык программирования Ruby
Фреймворк Ruby on Rails
PostgreSQL
ElasticSearch
Redis
Python
Go
RedHat
HTML5
CSS3
JavaScript
React
MobX
MobX State Tree
NodeJS
WebPack