Денис Пеганов: «Микросервисная архитектура — один из ведущих подходов в разработке программного обеспечения»

30.08.23, Ср, 17:37, Мск,

Специалист по автоматизированному тестированию Денис Пеганов рассказал, как сократить время разработки и выпуска новых версий приложений.

Специалист по автоматизированному тестированию TechHive Денис Пеганов

По данным портала Venture Guide, среди рыночных ниш, лидирующих по объему инвестиций в России в 2022 году, оказалась разработка программного обеспечения для бизнеса — инвестиции в это направление составили $449,35 миллиона.

Один из важнейших этапов разработки IT-решений для бизнеса — тестирование, именно поиск и своевременное исправление ошибок позволяют заказчикам избежать финансовых потерь. Специалист по автоматизированному тестированию Денис Пеганов предложил инновационный подход, создав имитацию реальных микросервисов с использованием инструмента Mountebank, чем повысил надежность и стабильность тестов. Денис работает в международной компании TechHive, которая специализируется на разработке высокотехнологичных решений для бизнеса и работает над проектами как американских стартапов, так и компаний со столетней историей. Об автоматизации как инструменте оптимизации процессов тестирования и перспективах этой области — наш разговор с талантливым QA Engineer, обладателем сертификата AWS Денисом Пегановым.

Денис, знаю, что вы еще в студенчестве работали тестировщиком, в том числе автотестером. С развитием микросервисов вы изучили облачные технологии и получили сертификат AWS. Наверняка все эти навыки пригодились, когда вас пригласили в такую престижную компанию, как TechHive?

Денис Пеганов: Думаю, да, это сыграло свою роль. Вакансии здесь бывают редко, меня рекомендовал коллега, который уже несколько лет работал в компании. В июле 2022 года я стал частью команды TechHive, которая всегда на переднем крае технологий. Наши решения меняют способы использования технологий людьми. Мы предоставляем комплексные IT-услуги, начиная от консалтинга и заканчивая разработкой продукта и поддержкой. Это позволяет клиентам работать с одним партнером на всех этапах проекта. При этом мы учитываем особенности бизнеса каждого клиента, разрабатывая качественные решения под конкретные нужды. Для себя я отметил, что, в сравнении с другими игроками на рынке, TechHive выделяется своим стремлением к инновациям, высоким уровнем экспертизы и глубоким пониманием потребностей клиентов. Да и работать с умными и преданными коллегами — большое удовольствие.

Вы сотрудничаете с такими известными в мире компаниями, как Gore, іHerb и другими. Эти партнерства подтверждают качество вашей экспертизы и доверие на рынке IT. Что вы предлагаете крупным клиентам?

Денис Пеганов: Действительно, TechHive активно сотрудничает с рядом крупных компаний, предоставляя им высокотехнологичные решения, адаптированные под их уникальные потребности. Так, для Gore мы разработали решения в области глобального хостинга и облачных сервисов. Компания Uqoud получила облачное решение для управления контрактами на рынках GCC и MENA. Для Spackle были предложены инновационные решения для малого коммерческого строительства. У компании Central Tech появились многоканальные розничные технологии для улучшения покупательского опыта.

В компании вы стали частью команды, работающей над проектом для модного английского бренда. Как развивается ваше сотрудничество?

Денис Пеганов: Изначально нужно было создать передовую облачную систему на основе микросервисной архитектуры. В начале этого года система успешно была запущена в продакшен, то есть сдана заказчику и установлена на его рабочих серверах. С тех пор я активно участвую в поддержании и оптимизации этой системы. Недавно я также начал работу над новым финансовым проектом для того же крупного британского ритейлера, что стало для меня очередным вызовом и возможностью применить свои навыки в другой сфере бизнеса.

Помимо тестирования микросервисов, вы заняты еще на нескольких проектах с другим направлением. Чем они вам интересны?

Денис Пеганов: Да, я активно участвую также в тестировании монолитных систем и баз данных. Этот аспект моей работы позволяет мне более глубоко понять взаимодействие между различными компонентами и уровнями приложений. Поддержка и помощь другим командам также входит в мою зону ответственности, я охотно делюсь своим опытом и знаниями.

Ранее я много работал над тестированием пользовательского интерфейса, и несмотря на то, что сейчас мой фокус переключился на другие аспекты, продолжаю поддерживать и развивать свои навыки в этой области. Тестирование UI интересно тем, что позволяет мне увидеть прямое взаимодействие пользователей с продуктом и обеспечить им наилучший опыт.

Во всех ваших тестах вы используете собственную методику, которая ускоряет процесс тестирования и обеспечивает высокое качество продукта. Расскажите, как родилась эта разработка.

Денис Пеганов: Моя методика — это, скорее, эффективная имплементация инструментов для тестирования Mountebank в сочетании с языком программирования Go для изоляции микросервисов в тестовой среде. Решение о применении этой комбинации было принято, чтобы повысить надежность и стабильность тестов. Когда я столкнулся с проблемами взаимодействия микросервисов с внешними системами и стабильности тестов в динамической среде, я осознал необходимость изменения подхода к тестированию. Это привело к исследованию различных инструментов и методик, и я нашел, что комбинация Mountebank и Go предлагает решение, которое могло бы устранить мои проблемы.

Тесты, написанные с использованием вашей методики, показали себя намного надежнее стандартных. Почему?

Денис Пеганов: Суть методики заключается в создании "моков" (от англ. mock - имитация, пародия, прим. TAdviser), или имитаций реальных микросервисов, с использованием Mountebank. Эти "моки" имитируют поведение реальных сервисов, но полностью изолированы от внешнего мира. Язык Go используется для автоматизации этого процесса, создания сценариев тестирования и обработки результатов.

Надежность тестов, написанных с использованием этой методики, обусловлена тем, что они изолированы от внешних факторов. Кроме того, мой подход обеспечил более высокое качество продукта и позволил ускорить процесс тестирования.

Да, до вашего прихода в команду крупного британского ритейлера для проверки существующего функционала перед утверждением новой версии приложения требовалось несколько дней. Сейчас на это уходит всего несколько часов. Какое решение вы предложили?

Денис Пеганов: Сокращение времени разработки и выпуска новых версий связано с тем, что написанные мной автотесты покрывают весь существующий функционал, и моя команда обнаруживает дефекты сразу после внесения изменений в программу. Это позволяет исправлять их значительно быстрее, чем на поздних этапах разработки, и компания успешно выпускает новый продукт в продакшн с отсутствием серьезных дефектов. Я контролирую и поддерживаю работоспособность микросервисов на протяжении всех этапов разработки. А всего за время работы в компании покрыл автотестами семь различных компонентов программы, впоследствии заменившей устаревшую систему управления складом.

При этом методика позволила снизить стоимость использования облачной платформы AWS для вашей команды примерно в два раза: с $400 до $200. За счет чего?

Денис Пеганов: Этого удалось добиться благодаря имплементации Mountebank — сервиса для изоляции отдельных компонентов во время тестирования, что позволило прекратить активное использование сервиса по просмотру логов. Я задействовал этот сервис в тестировании всех частей программы, благодаря чему компания смогла существенно оптимизировать затраты. Также существующие тесты стали более стабильны из-за независимости от внешних сервисов, что ускорило процесс разработки.

Вы не делаете из своей методики секрета и распространяете ее среди профессионалов. Кто и как использует вашу разработку?

Денис Пеганов: Методика, в первую очередь, приобрела популярность внутри проекта, связанного с британским ритейлером. Я активно помогаю коллегам адаптировать и применять эту методику в их проектах. Этот вклад в командное сотрудничество не только помогает улучшить качество наших продуктов, но и расширяет знания и навыки моих коллег по тестированию в условиях микросервисной архитектуры. Я знаю, что несколько других команд уже активно применяют этот подход в своей практике, и ожидаю, что их число будет расти в будущем, учитывая результативность и эффективность методики — передовые решения быстро находят применение в широком круге разработчиков и тестировщиков.

Свой подход к тестированию вы представили на международной конференции QECD 2023, посвященной вопросам качества программного обеспечения, инновациям и передовым методикам тестирования. Как коллеги восприняли ваш доклад?

Денис Пеганов: На конференции QECD 2023 я представил доклад на тему использования Mountebank в сочетании с Go для изоляции микросервисов. В ходе презентации я рассказывал о преимуществах и особенностях применения этой комбинации инструментов, а также демонстрировал, как они помогают создавать более надежные и изолированные тестовые среды, свободные от зависимостей внешних систем.

Приятно, что после конференции со мной связалось несколько коллег, которых интересовали преимущества и недостатки сочетания Mountebank и Go. Хотя я и рассказывал об этом в презентации довольно подробно, все равно тема вызывает много вопросов, видимо, из-за того, что технологии относительно новые и многие еще сомневаются в целесообразности их использования. Я дал им рекомендации по наилучшим практикам и инструментам, дополняющим Mountebank и Go в контексте изоляции микросервисов. А также посоветовал регулярно проводить обучение команды, документировать все новонаписанные тесты и по возможности использовать дополнительные библиотеки или фреймворки, специально разработанные для работы с Go и Mountebank — это упрощает процесс и повышает его эффективность в целом.

Применение этих инструментов вы подробно описали в статье для научного журнала «Актуальные исследования», а в «Вестнике науки» посвятили публикацию контрактному тестированию с использованием инструмента Pact и языка программирования Go. Почему вы считаете важным заниматься научной деятельностью?

Денис Пеганов: Для меня научная деятельность и написание статей представляют особую ценность, так как это позволяет сохранять и передавать мои профессиональные знания в устойчивой форме. Я часто сталкивался с отсутствием информации по актуальным темам и понимаю, как важно иметь доступ к качественным ресурсам для обучения. Поделиться опытом через статьи — это способ облегчить путь для других специалистов, получить обратную связь от сообщества и углубить свои знания.

Вы планируете продолжать изучать технологии, связанные с микросервисами, для ускорения тестирования и надежности продукта в целом. Почему вы считаете это направление перспективным?

Денис Пеганов: Микросервисная архитектура является одним из ведущих подходов в современной разработке программного обеспечения, и я действительно считаю это направление перспективным. Во-первых, микросервисы предоставляют возможность разрабатывать и масштабировать отдельные части системы независимо друг от друга. Это делает процесс разработки и развертывания более быстрым и гибким. Во-вторых, разделение системы на множество микросервисов увеличивает ее устойчивость к отказам. Если один микросервис перестает работать, другие продолжают функционировать. В-третьих, происходит оптимизация ресурсов. Разработка сосредоточена на конкретных функциональных задачах, что позволяет лучше использовать ресурсы и повышает производительность. В-четвертых, микросервисы облегчают процесс CI/CD, что позволяет быстро и безболезненно внедрять новые функции и улучшения. Ну и, наконец, изоляция микросервисов позволяет создавать более точные и надежные тестовые сценарии. Это, в свою очередь, ведет к созданию продукта высшего качества, к чему, собственно, я и стремлюсь.

Автор: Вячеслав Николаев