Тестирование приложений — важный этап разработки. Одна из задач, которую приходится решать на этом этапе — оптимизация времени выполнения отдельных функций и выявление «узких» мест, сказывающихся на производительность работы приложения и системы в целом. Если для настольных платформ в распоряжении разработчиков давно имеются соответствующие инструменты диагностики, то для облачных сред такой класс продуктов находится на стадии раннего развития. Новый продукт этого класса — служба Google Cloud Trace, анонсированная на июньской конференции Google I/O в Сан-Франциско. 8 января Google объявила о начале опытной эксплуатации полнофункциональной бета-версии Cloud Trace.
Назначение Google Cloud Trace состоит в том, чтобы оказывать помощь в диагностике приложений, запускаемых в облаке на платформе Google App Engine. Проблемы, которые можно решать с помощью этого инструмента, связаны с выявлением недостаточной производительности приложений из-за временных задержек на выполнение отдельных операций. Механизм Cloud Trace подключается к потокам инструкций, направляемых к облачным сервисам, и ведет их трассировку. Он способен выявлять замедления в обработке запросов и откликов облачной системы. Получая его подробный отчет, разработчик может выявить, где тратится время, и устранить проблему.
Внешне Cloud Trace напоминает Dynamic Tracing (DTrace) — инструментальный пакет для динамической трассировки и отладки ядра и приложений, используемых для Solaris и других Unix-систем. Первоначально этот продукт был разработан в Sun Microsystems, и теперь он появился под Linux.
Разработчиком нынешнего продукта Cloud Trace является Брайан Кантрилл (Bryan Cantrill). Это тот самый разработчик, который когда-то занимался разработкой DTrace для Solaris. Сейчас он работает техническим директором в компании Joyent, специализирующейся на создании PaaS-решений облачных контейнеров. В скором будущем эти решения могут составить прямую конкуренцию для Amazon Web Services.
Технология Google Cloud Trace
Все замеры производятся в реальном времени. Google Cloud Trace «прозванивает» процессы и накапливает статистику по времени их откликов. Анализ собранных данных позволяет выявить участки с задержками или несвоевременным откликом. Размещая собранные данные на графике можно получить полную картину о задержках, происходящих при работе системы.
Сложность задачи состоит в том, что падение производительности часто не проявляется явно, а находится в латентном состоянии. Разработчик не видит отказов, если система в целом работает без сбоев. Но это не означает, что проблемы не существует. Она может проявиться после появления косвенных факторов. Выявлять «узкие» места следует заранее.
Поскольку разработчик знает свое приложение, то он видит, как оно работает изнутри. Однако при разработке облачных систем этого недостаточно. Необходимо заранее оценить, как будет вести себя приложение, когда к нему будут подключаться пользователи. Их приход неминуемо отразится на производительности, и Cloud Trace позволяет оценить эти изменения.
Cloud Trace раскладывает поток обращений к облачным функциям на составляющие, делая разбивку длиной порядка нескольких миллисекунд. Такое препарирование позволяет разработчику понять, к какому элементу облачной подсистеме направлено текущее обращение.
Этот инструмент умеет также собирать запросы, отправляемые различными пользователями. Этот путь позволяет выявить места, где возникают интенсивные задержки и как они связаны с нарастанием числа пользователей.
Поиск решения состоит в том, чтобы внося изменения в прикладную программу, проводить сравнение задержек, используя замеры Cloud Trace, сделанные до и после изменений. В результате, «можно подобрать нужную комбинацию», считают в Google.
Применение Google Cloud Trace
Для работы с Cloud Trace требуется консоль Google Developers Console. Подключив Cloud Trace к определенному приложению, его можно запускать в работу. Надстройка Cloud Trace достаточно «тонкая», поэтому ее добавление не оказывает сколь-нибудь существенного влияния на производительность.
При работе приложения Cloud Trace ведет трассировку обращений к облачной среде и записывать время, затрачиваемое на выполнение отдельных операций.
Как отмечает Google, инструмент Cloud Trace применим в настоящее время только для приложений, работающих на базе App Engine или любой управляемой ВМ, запущенной в инфраструктуре Google. О совместимости Cloud Trace с сервисами облачных вычислений Google Compute Engine (GCE) пока не сообщается. По всей видимости, Google планирует сначала понаблюдать, как будет работать новый инструмент в среде App Engine. Убедившись, что рядовые пользователи не испытывают проблем, Google, по всей видимости, начнет постепенно расширять доступность инструмента для других облачных сред.
Следуя негласному регламенту, который можно выявить по предыдущим запускам облачных продуктов Google, можно ожидать, что через год служба Cloud Trace получит статус рабочего сервиса с полной технической поддержкой.