Рад представить вам 72-й выпуск SDCast’а! У меня в гостях Ильяс Салихов, директор по технологиям в компании Intaro и проекте retailCRM. В этом выпуске мы с Ильясом обсуждаем различные аспекты разработки, начиная от технических составляющих и заканчивая различными “soft skills” темами.
В начале Ильяс рассказал про проект retailCRM, как он появился, какие решает задачи, как устроен и работает. Обсудили мы архитектуру проекта и используемые технологии. Под капотом проекта используются: PHP/Symfony/Doctrine, PostgreSQL, Redis, сервисы на Python и Go и много чего ещё.
RetailCRM — это SaaS с большим количеством пользователей, где под пользователями понимается не конкретный человек, а целая компания, использующая retailCRM, внутри которой уже работает некоторое количество человек-пользователей. Сейчас сервис используют порядка 5000 магазинов, то есть пользователей-компаний, 30 млн хитов в сутки.
Ильяс рассказал, как они организуют хранение разных пользователей-компаний в базе данных и как организована работа бэкенда с этими данными. Забегая вперёд скажу, что retailCRM — это по большому счёту монолит на PHP/Symfony, где каждый пользователь-компания живёт на своём поддомене, однако все запросы обрабатываются этим самым монолитным приложением, а данные каждого пользователя-компании — это отдельная схема в базе данных PostgreSQL.
Также Ильяс рассказал про архитектуру и программные компоненты всей системы в целом. Обсудили мы вопросы миграции данных и выкладки новых версий компонентов, задачи мониторинга и обслуживания и другие сопутствующие вопросы.
Не обошли мы стороной и различные около технические темы в разработке, такие организация и инструменты командной разработки, вопросы найма и оценки квалификации программистов, расширение кругозора и обмен знаниями внутри компании.
Ссылки на ресурсы по темам выпуска:
- Beanstalkd — простое решение для организации очередей
- Доклад Ильяса про варианты кеширования в Doctrine и тегированный кеш “Extended Doctrine Cache”
- Статья Андрея Смирнова “Проблема одновременного перестроения кэшей”
- Доклад Ильяса “Особенности построения SaaS-сервиса на Symfony2”
- GoSSHa — утилита быстрого параллельного выполнения команд на тысячах серверов
- dplr — обертка над GoSSHa на PHP
- Pinba — MySQL storage engine that acts as a realtime monitoring/statistics server for PHP
- Intaro Pinboard — Realtime PHP monitoring system which aggregates and displays Pinba data
- pinba-bundle — Symfony bundle for pinba timers sending with time of operations execution for Doctrine, Twig and Memcache
- custom-index-bundle — создание нестандартных индексов (например, индексы на выражение, partial-индексы, gist/gin-индексы) в PostgreSQL через аннотации в Doctrine
- twig-injection-bundle — бандл позволяет добавить событийную модель в twig для слабой связности шаблонов
- Канал Intaro Development на Youtube с записями докладов с митапов Intaro
Понравился выпуск? — Поддержи подкаст на patreon.com/KSDaemon а так же ретвитом, постом и просто рассказом друзьям!