Считаете, что «Утес Бернса», «Холмы Колумбии», «Индевор» и «Кратер Бонневиль» не похожи на земные названия? Абсолютно верно! Эти географические объекты, как и многие другие, были исследованы марсоходами NASA в рамках исследовательского проекта Mars Exploration Rover (MER). За последние годы эти аппараты смогли добыть и передать на Землю целый кладезь важнейших данных, включая снимки высокого разрешения с поверхности красной планеты. В настоящее время сервис Amazon Simple Workflow (Amazon SWF) используется наряду с ключевыми вычислительными технологиями, которые используются в рамках этих исследовательских миссий. Вместе с ними сервис позволил ученым NASA осуществлять критически важные операции с высоким уровнем надежности и эффективно обрабатывать растущий объем регистрируемых данных о нашей вселенной.
Проект Mars Exploration Rover
Лаборатория реактивных двигателей NASA (JPL) использует сервис Amazon SWF в качестве важнейшего компонента нескольких исследовательских миссий, включая проект исследования Марса Mars Exploration Rover (MER) и арктический проект Carbon in the Arctic Reservoir Vulnerability Experiment(CARVE). Эти миссии постоянно генерируют большие объемы данных, которые необходимо обрабатывать, анализировать и хранить с высокими показателями эффективности и надежности. В процессах обработки данных для тактических операций и научного анализа используется крупномасштабное упорядоченное исполнение этапов с широкими возможностями для распараллеливания нагрузки между несколькими вычислительными машинами. В качестве примера можно привести формирование стереоскопических данных из парных изображений, сшивание панорам разрешением в несколько гигапикселей, позволяющих ученым в подробностях разглядеть марсианский ландшафт, и разделение этих гигапиксельных изображений на части, чтобы данные можно было загружать по запросу. Эти данные используются международным сообществом операторов и ученых, часто работающих в очень сжатых временных рамках, свойственных тактическим операциям и составляющих порой всего несколько часов. Чтобы обеспечить соответствие этим требованиям, инженеры JPL поставили себе задачу выполнять обработку и распространение изображений поверхности Марса в течение нескольких минут.
JPL уже давно использует AWS для хранения и обработки данных. Большая часть этих задач выполняется с помощью инфраструктуры Polyphony, которая является базовой реализацией облачно-ориентированной архитектуры JPL. Она поддерживает предоставление, хранение, мониторинг и оркестрацию задач для процессов обработки данных в облаке. Набор средств Polyphony для обработки и анализа данных на тот момент включал сервис Amazon EC2 для выполнения вычислений, Amazon S3 для хранения и распространения данных, а также Amazon SQS и реализации MapReduce, такие как Hadoop, для распределения и исполнения заданий. Однако в системе отсутствовал один из важнейших компонентов: сервис оркестрации, который осуществлял бы надежное управление заданиями для крупных, комплексных рабочих процессов.
Хотя очереди и предлагают эффективный подход к распределению массивной параллельной нагрузки, инженеры довольно быстро столкнулись с его недостатками. Очереди были признаны неподходящими для обработки сложных рабочих процессов из-за невозможности описания очередностей и зависимостей. Инженерам JPL также пришлось решать проблему с дублированием сообщений при использовании очередей. Например, в процессе сшивания изображений дублирующееся задание приводило к дорогостоящей избыточной обработке, в результате чего по мере исполнения этого бесполезного рабочего процесса возникали дальнейшие дорогостоящие расчеты. Кроме того, у JPL было множество рабочих сценариев, которые не полагались исключительно на обработку данных и требовали использования механизмов управления потоком команд. И хотя инженеры легко могли реализовать потоки с управлением данными с помощью MapReduce, им оказалось сложно описать каждый из шагов рабочего процесса с помощью инфраструктурной семантики. В частности, по мере роста сложности процесса обработки данных они столкнулись со сложностями в представлении зависимостей между этапами процесса обработки и при контроле сбоев, возникающих в ходе распределенных вычислений.
Инженеры JPL предъявили следующие требования к сервису оркестрации.
- Высокая доступность: поддержка критически важных операций.
- Масштабируемость: параллельное выполнение расчетов на сотнях инстансов Amazon EC2.
- Единообразие: запланированное задание должно исполняться однократно с очень высокой вероятностью.
- Экспрессивность: простое описание комплексных рабочих процессов с целью ускорения разработки.
- Гибкость: исполнение рабочих процессов не должно быть ограничено ресурсами Amazon EC2, должна поддерживаться маршрутизация заданий.
- Производительность: задачи должны планироваться с минимальными задержками.
Инженеры JPL использовали сервис Amazon SWF и интегрировали его в рабочие процессы Polyphony, ответственные за обработку данных изображений поверхности Марса, используемых в тактических операциях. Им удалось получить беспрецедентный уровень управляемости и прозрачности при распределенном исполнении процессов. Что самое важное, теперь им удалось описать комплексные рабочие процессы в сжатой форме без необходимости описания проблемы в какой-либо конкретной парадигме.
Для поддержки функции Fast Motion Field Test марсоходом Curiosity, также известным как Mars Science Laboratory, инженерам JPL необходимо было реализовать обработку изображений, формирование стереоскопических фотографий и создание панорам. Для создания стереоскопических фотографий требуется пара изображений, полученная одномоментно. Эта пара изображений содержит информацию о дальности, которая сообщает тактическому оператору расстояние и направление от марсохода до точек изображения. Левое и правое изображения могут обрабатываться параллельно, однако стереоскопическая обработка не начнется до тех пор, пока не будет обработано каждое из изображений. Классический рабочий процесс по сборке-разборке сложно описать с помощью системы, использующей очередность, в то время как его описание с помощью SWF представляет собой всего несколько простых строк кода на Java в совокупности с комментариями для AWS Flow Framework.
Создание панорам также реализовано в виде рабочих процессов. В тактических целях панорамы создаются каждый раз, когда марсоход паркуется и делает фотоснимки. Таким образом, каждый раз, когда из определенного места поступает новое изображение, панорама дополняется новой информацией. Из-за большого разрешения панорам и сжатых сроков их формирования задачу необходимо было распределять и оркестрировать между множеством вычислительных машин. Алгоритм, реализованный инженерами, разделяет панораму на большое количество крупных строк. Первое задание рабочего процесса создает строки на основании изображений, доступных для конкретного места. Созданные строки уменьшаются до нескольких разрешений и разбиваются на части для использования удаленными клиентами. Благодаря богатому набору функций Amazon SWF инженерам JPL удалось описать поток этого приложения в качестве рабочего процесса Amazon SWF.
Функциональные возможности панорамной камеры Pancam марсохода Opportunity – 77 цветных изображений общим разрешением 11280×4280 пикселей. Изображение делится на части на шести уровнях детализации, чтобы изображение было доставлено в средство просмотра в необходимом размере. Границы отдельных частей на каждом изображении представлены желтыми линиями сетки. Панорамы для прибора Mastcam, расположенного на Mars Science Laboratory, состоят из 1296 изображений общим разрешением почти в 2 гигапикселя. Подобное панорамное изображение показано ниже.
В результате переноса оркестрации в облако сервис Amazon SWF позволил JPL задействовать как внутренние, так и внешние ресурсы и эффективно распределить исполнение приложений в публичном облаке, благодаря чему появилась возможность динамического масштабирования и запуска приложений в полноценно распределенном режиме.
Многие процессы обработки данных, реализованные JPL, представляют собой автоматизированные процедуры, осуществляющие выгрузку и параллельную обработку данных, а также загрузку результатов. Процедуры выгрузки и загрузки исполняются на локальных серверах, а процедуры обработки данных исполняются как на локальных серверах, так и на узлах Amazon EC2. За счет использования функционала маршрутизации, доступного в Amazon SWF, разработчики JPL динамически встроили процедуры в рабочий процесс и воспользовались преимуществами их характеристик, например локальностью данных. Обрабатывающее приложение также имеет высокий уровень доступности, потому что даже при возникновении сбоев в работе локальных процедур облачные процедуры продолжают свою работу. Поскольку Amazon SWF не ограничивает местонахождение рабочих узлов, JPL исполняет задания в нескольких регионах, а также в локальных центрах обработки данных для обеспечения максимального уровня доступности, необходимого для критически важных систем. По мере появления сервиса Amazon SWF в других регионах JPL планирует реализовать автоматическую обработку отказов в сервисе SWF в различных регионах.
JPL использует сервис Amazon SWF не только для решения задач обработки данных. Благодаря возможностям планирования Amazon SWF инженеры JPL создали распределенную систему задач Cron, которая надежно исполняет критически важные операции в определенное время. Помимо надежности, JPL удалось получить беспрецедентную централизованную прозрачность при исполнении таких распределенных задач благодаря функциям мониторинга Amazon SWF, доступным в Консоли управления AWS. Специалисты JPL даже разработали приложение, осуществляющее резервное копирование важных данных проекта MER в Amazon S3. Благодаря распределенным задачам Cron специалисты JPL обновляют резервные копии, а также выполняют аудит целостности данных с необходимой для конкретного проекта частотой. Все этапы этого приложения, включая шифрование, выгрузку данных в S3, произвольный выбор данных для проведения аудита и фактический аудит, заключающийся в сравнении локальных данных с данными в S3, надежно оркестрируются сервисом Amazon SWF. Кроме того, некоторые команды специалистов JPL смогли быстро перенести существующие приложения для использования оркестрации в облаке за счет поддержки языков программирования, доступной в AWS Flow Framework.
JPL по-прежнему использует Hadoop для простых процессов обработки данных, а Amazon SWF теперь является приоритетным выбором для реализации приложений с комплексными зависимостями между этапами обработки. Разработчики также часто используют функции диагностики и анализа, доступные в Консоли управления AWS, для отладки приложений в процессе разработки и для трассировки ошибок распределения. Благодаря AWS критически важные приложения, на разработку, тестирование и развертывание которых ранее уходило несколько месяцев, теперь проходят этот процесс всего за несколько дней.