Разработка сайтов и веб‑приложений на современых технологиях
Широкий стек технологий
Мы используем широкий стек технологий и платформ для разработки сайтов и веб‑приложений. Это позволяет добиваться лучших результатов и обеспечивает более высокую сопровождаемость проектов. Мы очень внимательно подходим к вопросу выбора используемых технологий и платформ, так как в продолжительных и технически сложных проектах ошибки в подборе инструментов обходятся очень дорого.
Используемые технологии:
- В основном мы используем языки программирования Ruby, TypeScript и JavaScript. Фреймворки — Ruby on Rails и Next.js. Для фронтенд-разработки используем HTML5, CSS3 (SСSS/SASS), TypeScript (JavaScript) + библиотеки React и Tailwind. Для задач машинного обучения и анализа данных — Python, а для высоконагруженных сервисов — Go или Elixir.
- СУБД, хранилища, очереди, кеширование и поиск — обычно это PostgreSQL, Redis, ElasticSearch; редко MySQL, MariaDB, Oracle, MS SQL, MongoDB, Memcached, ScyllaDB или Cassandra. Основной веб‑сервер — nginx. Серверные ОС — Linux: в основном AlmaLinux, реже Debian, Ubuntu & Astra Linux. Обычно используем виртуализацию на KVM/QEMU и контейнеризацию Docker. Работаем и с Kubernetes, но заметно реже.
Это далеко не полный список технологий, используемых в нашей компании.
Наш подход к архитектуре
На бэкенде в большинстве проектов мы используем фреймворк Ruby on Rails, в качестве слоя хранения — PostgreSQL, для очередей заданий и кеширования — Redis, а для поиска, фасеточной фильтрации и персонализации выборок — ElasticSearch. Интерфейсы разрабатываем на базе HTML5, CSS3 и TypeScript, чаще всего на связке Next.js + React, используя современные системы сборки и компонентную архитектуру.
Обычно мы реализуем бэкенд, работающий в режиме API, а фронтенд в виде Single Page Application с серверным (SSR) или гибридным (SSG + ISR + SSR) рендерингом для максимального соответствия SEO‑требованиям и для ускорения отрисовки страниц при первой загрузке.
В процессе разработки и дальнейшего сопровождения используем систему контроля версий Git (обычно в соответствии с методологией Trunk Based Development, реже работаем по GitFlow). Активно используем системы автоматического тестирования и линтеры в контуре непрерывной интеграцию на базе GitLab. Всегда автоматизируем процесс разворачивания (и через CI/CD GitLab, и изолированно от него), в большинстве проектов также используем от одного до нескольких пред‑продуктивных окружений (стейджинги).
Этот подход особенно хорошо зарекомендовал себя в разработке высоконагруженных и длительно сопровождаемых проектов в сфере электронной коммерции, в создании корпоративных систем и бизнес‑приложений со сложной логикой обработки данных и высокими требованиями к информационной безопасности.
Критерии выбора технологий
Разумеется, что выбор технологий осуществляется в первую очередь исходя из целей и задач, имеющихся ограничений и возможных векторов дальнейшего развития проекта.
С технической точки зрения при выборе технологий мы ориентируемся на соответствие выбранного стека уровню задач (забивать гвозди микроскопом — это плохой путь), на стабильность предлагаемых решений, на дальнейшую сопровождаемость, на информационную безопасность и на скорость разработки.
С юридической и финансовой точек зрения — обычно ориентируемся на открытое программное обеспечение, которое можно как использовать в коммерческих целях без каких‑либо лицензионных отчислений и без возникновения обязательств по раскрытию программного кода реализуемого продукта. А также подбираем те платформы, которые не имеют сложностей и проблем в работе на территории Российской Федерации.