В подавляющем большинстве проектов мы используем для разработки бэкенда язык программирования Ruby, фреймворк Ruby on Rails и систему управления базами данных PostgreSQL, а для фронтенд-разработки — язык программирования TypeScript, библиотеку React и фреймворк NextJS.
С технической точки зрения — это хорошо зарекомендовавший себя стек, обеспечивающий достаточно высокую скорость разработки, хороший уровень информационной безопасности и стабильность работы системы. С юридической и финансовой точки зрения все перечисленные компоненты — это открытое программное обеспечение, которое можно использовать в коммерческих целях без каких‑либо лицензионных отчислений и без возникновения обязательств по раскрытию программного кода реализуемого продукта. Также перечисленное программное обеспечение не имеет проблем с работой на территории Российской Федерации.
Для разработки проектов со специфическими требованиями или для иных продуктовых задач мы используем и другие языки программирования, фреймворки, библиотеки или платформы. При их выборе мы в первую очередь руководствуемся их применимостью, сопровождаемостью, надёжностью и безопасностью.
Мы эволюционно прошли путь от разработки сайтов на коробочных CMS и проектов по лоскутной системной интеграции до разработки комплексных цифровых продуктов на базе современного технологического стека. И более 10 лет в качестве основного фреймворка используем Ruby on Rails — он обеспечивает высокую скорость разработки, гибкость, надёжность и хорошую сопровождаемость проектов после завершения разработки. В качестве СУБД мы обычно используем PostgreSQL, эта объектно-реляционная система управления базами данных, которая очень хорошо зарекомендовала себя в сложных и высоконаруженных проектах. Кэширование и очереди обычно на Redis, поиск — на ElasticSearch, брокер сообщений — RabbitMQ. При разработке простых проектов мы иногда используем только TypeScript и экосистему NodeJS.
Для разработки клиентской части веб‑приложений чаще всего мы используем TypeScript (типизированный JavaScript), библиотеку React и фреймворк NextJS. Это современный технологический стек, позволяющий разрабатывать приложения в виде Single Page Application (SPA) с серверным рендерингом (SSR).
Для мобильных решений мы обычно используем возможности PWA (прогрессивные веб‑приложения) или разрабатываем полноценные приложения на React Native. Первый подход позволяет существенно сэкономить и получить независимость от магазинов приложений, что в современных реалиях стало достаточно важным. Разработка на React Native позволяет добиться более высокой функциональности приложения по сравнению с PWA. По возможностям при разработке бизнес‑приложений React Native вполне сопоставим с нативной разработкой на Swift (iOS) и Kotlin (Android), однако этот подход обеспечивает более высокую скорость разработки при меньшем бюджете.
Наш основной инструмент на сегодняшний день — это Figma. В Figma мы разрабатываем и интерактивные прототипы, и дизайн интерфейсов. В некоторых задачах используем Adobe Photoshop и Illustrator, иногда Blender, а в совcем редких случаях — Corel Draw.
05
Машинное обучение, нейросети и анализ данных
+
Для задач ML и анализа данных мы используем преимущественно экосистему Python (NumPy, Pandas, PyTorch, Tensorflow) и крайне редко язык R. Также интегрируемся со сторонними сервисами типа ChatGPT от Open AI или с Yandex GPT.
06
Системное администрирование и DevOps
+
В основном мы работаем в виртуализированных средах, но на собственном «железе»: используем гипервизор KVM и RHEL‑подобные гостевые системы (Rocky Linux, AlmaLinux). Платформа для VCS & CI/CD — GitLab. Контейнеризация — Docker, оркестрация контейнеров — Docker Swarm и Kubernetes. Однако, в обычных проектах по экономическим соображениям и из‑за простоты поддержки чаще используем виртуализацию, нежели контейнеризацию с оркестрацией.
07
Специфичные технологии
+
За более чем 20 лет в сфере веб‑разработки нам довелось поработать с очень многими технологиями. В нулевых и начале десятых мы разрабатывали на PHP, этот опыт бывает полезен при переносе устаревших и/или «коробочных» проектов на новые технологии. Работали с Elixir / Erlang и c GoLang — этот опыт может пригодиться при разработке высоконагруженных сервисов (более 1000 RPS).