Используемые технологии в разработке
Мы стремимся использовать современные методологии и технологии в разработке ПО. Это позволяет добиваться лучших результатов и обеспечивает более высокую сопровождаемость проектов.
На бэкенде в большинстве проектов мы используем язык программирования 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).
Используемый стек технологий позволяет создавать отличные решения для широкого спектра бизнес-задач и под самые жёсткие требования.
Мы используем технологии, которые хорошо зарекомендовали себя в «боевых» условиях.
При выборе технологического стека для проектов мы всегда основываемся на двух основных критериях — эффективности и экономической целесообразности.