Эльнур Абдуррахимов: Даже прибыльная компания не может устойчиво расти без надежной, масштабируемой серверной архитектуры
Компании осознали потенциал облачных технологий — если в 2021 году объем российского рынка облачных инфраструктурных сервисов составил 61,1 млрд руб., то в 2022-м увеличился на 40%, показало исследование аналитической компании IKS Consulting. Однако эффективность вложений из-за неправильной архитектуры, низкой автоматизации и технического долга, который компании унаследовали еще до перехода в облачную среду, остается низкой. Решение проблемы, напрямую влияющей на гибкость бизнеса, его расходы и способность к росту, лежит не только в плоскости технологий, оно тормозится из-за дефицита специалистов, способных перестраивать системы в условиях реальных нагрузок. Как успешно преодолеть эти трудности и построить эффективную облачную систему для достижения бизнес-целей — эти вопросы мы задали опытному инженеру бэкенд-разработки и архитектору облачных технологий Эльнуру Абдуррахимову. Его решения по масштабируемой серверной архитектуре внедрены в международных компаниях, а разработанные им инструменты с открытым исходным кодом стали частью широко используемых фреймворков.
CNews: Эльнур, вы почти десять лет занимаетесь трансформацией крупных бэкенд-систем. Учитывая этот значительный опыт, скажите, на какие принципы нужно опираться, чтобы IT-процессы усиливали бизнес?
Эльнур Абдуррахимов: Для достижения реальных преимуществ бизнеса необходима комплексная архитектурная трансформация, где главный принцип — масштабируемость и гибкость. Система должна быть способна к быстрому увеличению объема ресурсов при росте нагрузки или уменьшению при спаде активности, то есть автомасштабированию. Далее нужно обеспечить качество и надежность, что достигается внедрением правильной автоматизации тестирования. Даже прибыльная компания с сильными клиентами не может устойчиво расти без надежной, масштабируемой серверной архитектуры.
CNews: Вы начали переносить IT-системы в облака в середине 2010-х, когда эта практика еще не была массовой и в России, и в мире. Что убедило вас в перспективности решения для бизнеса?
Эльнур Абдуррахимов: Я видел, что облака дают компаниям гибкость, которую невозможно получить на статической инфраструктуре. Первый крупный опыт у меня был в 2016 году в международной компании Simple Booth, где я отвечал за полный цикл развития бэкенда. На тот момент он там был в зачаточном состоянии и не справлялся с колебаниями трафика, особенно по выходным и праздникам, когда нагрузка вырастала в разы. Либо серверной мощности было недостаточно для обработки всех запросов во время пика, что приводило к проблемам для пользователей; либо мощностей было слишком много, что приводило к простоям и избыточным расходам. К тому же наблюдались проблемы с надежностью и качеством бэкенда. Сначала я перенес его в облако, и это позволило решить две проблемы одновременно — обеспечить автомасштабирование и убрать лишние затраты. Далее я автоматизировал непрерывный процесс развертывания нового кода в продакшене, что позволило устранить человеческий фактор в команде и ускорить выпуск обновлений продуктов. Полученные результаты стали для меня доказательством, что облачные архитектуры дают бизнесу прямой экономический эффект.
CNews: В своих проектах вы уделяете особое внимание автоматизации, что позволяет значительно повысить эффективность процессов, снизить издержки и обеспечить масштабируемость решений для ваших клиентов. Какие шаги важнее всего для повышения производительности, и что вы делаете сами?
Эльнур Абдуррахимов: Следует полностью автоматизировать процесс развертывания, исключив человеческий фактор и обеспечив возможность выпускать код одним щелчком мыши. С этого я и начинаю. Затем автоматизирую локальные среды разработки для бэкенд-инженеров, избавившись от проблем, связанных с «работает на моей машине». В результате автоматизации была создана стандартизированная среда разработки, значительно повысившая надежность системы и производительность команды, которая теперь может развернуть код в любое время без риска нарушения существующей функциональности. Ну а далее — автоматизация тестирования, которая нужна для уверенности в стабильности функционала при изменениях. Я работал над многими проектами, но никогда лично не видел, чтобы она была реализована правильно. В компаниях, где я работал, тесты либо отсутствовали, либо были поверхностными, не давая уверенности и считаясь пустой тратой времени, из-за чего их игнорировали. Мой подход к автоматизации тестирования отличается тем, что я делаю это для уверенности. Когда коллеги на практике видят, как тесты предотвращают регрессии, у них меняется восприятие, и они осознают их пользу.
CNews: Какую роль играет автоматизация тестирования в обновлениях бэкенда?
Эльнур Абдуррахимов: В наше время, когда бэкенд обновляется по несколько раз в день, ручное тестирование было бы крайне рискованным — всегда есть вероятность, что что-то пойдет не так. Протестировать весь функционал сложной системы вручную занимает часы, а иногда и дни. Автоматизированные тесты справляются с этой задачей за несколько минут, что позволяет с уверенностью выкатывать обновления так часто. Раньше разработка ПО занимала месяцы и годы. После этого следовала фаза ручного тестирования, исправление ошибок и только потом релиз. Сегодня новые функции создаются за считанные часы или дни и выкладываются на продакшен несколько раз в неделю. В таком коротком цикле нет места ручному тестированию. Именно автоматизация сделала практичными гибкие подходы к разработке, не жертвуя качеством продуктов.
CNews: Многие компании боятся полной переработки бэкенда из-за рисков, но в вашей практике есть примеры, когда именно радикальная реконструкция помогла системам выдерживать многократно возросшие нагрузки и упростили развитие функционала. Почему это стоит делать?
Эльнур Абдуррахимов: Потому что иногда старый фундамент не выдерживает новые задачи. Я сам не сторонник идеи выбрасывания старого кода и переписывания всей системы с нуля, но это не значит, что эту задачу нельзя решить поэтапно, растянув процесс на годы. В Simple Booth я за несколько лет перепроектировал всю серверную часть, используя современные фреймворки, автоматизацию тестирования, микросервисы и нереляционные базы данных для управления растущим объемом данных. Благодаря этому компания получила возможность масштабироваться и обслуживать клиентов международного уровня — Uber, Amazon, Red Bull, некоторые шоу на NBC. Это пример того как архитектура напрямую определяет верхнюю планку развития бизнеса.
CNews: Один из принципов, которые вы продвигаете, — это «написание кода для людей, а не для машин». Что вы под этим подразумеваете, и почему это так важно в бэкенд-разработке?
Эльнур Абдуррахимов: Этот принцип тесно связан с написанием поддерживаемого кода, который способен адаптироваться к постоянно меняющимся бизнес-требованиям. Машина понимает любой код, который соответствует синтаксису, но люди — другие разработчики, которые будут работать с этим кодом после вас, — должны быстро в нем разобраться. Если код сложен, запутан или плохо структурирован, это замедляет разработку, увеличивает количество ошибок и в конечном итоге повышает затраты для компании. Любой младший программист может написать код для машины, которая исполнит его без проблем. А вот написание очевидного для других людей самодокументирующегося кода — это годы осознанной теории и практики. Это очень важный и полезный скилл. И, что печально, достаточно редкий.
CNews: Вы активно делитесь своим опытом и знаниями с профессиональным сообществом. А один из ваших проектов с открытым кодом был интегрирован в ядро всемирно известного фреймворка Symfony, став фактически частью стандарта безопасности, и ваша работа теперь влияет на защищенность миллионов веб-приложений. Расскажите о нем подробнее.
Эльнур Абдуррахимов: Да, проект ElnurBlowfishPasswordEncoderBundle — один из наиболее узнаваемых и значимых. Я создал его для Symfony, чтобы пользователи могли применять современное хеширование паролей bcrypt еще до того, как это стало поддерживаться самим фреймворком. Пакет быстро набрал популярность, его установили более 129 тысяч раз. Концепция и реализация были интегрированы в официальное ядро фреймворка как компонент безопасности, а мой подход к структурированию кода проекта «Symfony без пакетов» был принят его разработчиками в качестве официальной передовой практики. Также я активно продвигал эти и другие идеи в подробных ответах на платформе StackOverflow, которые прочитали более двух миллионов человек.
CNews: С учетом вашего опыта, какой видите свою роль в развитии архитектурной культуры?
Эльнур Абдуррахимов: Я считаю, что компетентная архитектура должна быть доступна бизнесу любого масштаба. Именно поэтому я публикую решения с открытым исходным кодом и участвую в онлайн-сообществах, где делюсь своим опытом, чтобы помочь разработчикам по всему миру создавать безопасные и масштабируемые системы. Задача архитектора — заранее принять правильные решения там, где их потом тяжело и дорого изменить. Нужно максимально продумать «фундамент» проекта, чтобы он нормально развивался дальше. Ведь чем дальше заходит разработка, тем сложнее исправлять архитектуру. И я готов помогать в создании подходящей архитектуры, потому что вижу, насколько это важно для бизнеса и глобального развития экономики в целом.
Короткая ссылка на материал: //cnews.ru/link/a22728



