Node.js помогает НАСА обеспечивать безопасность астронавтов и доступ к данным

Во время выхода в открытый космос в 2013 году итальянский астронавт Лука Пармитано оказался в серьезной опасности — в его шлем просачивалась вода. Вода быстро мигрировала в невесомости к его глазам, ушам и носу. Вскоре Лука изо всех сил пытался слышать и видеть, и у него начались проблемы с дыханием. К счастью, его партнер по выходу в открытый космос, Крис Кэссиди, был рядом и провел Луку в шлюз и безопасность. В космосе достаточно сложно выжить без заполненных водой шлемов, поэтому НАСА прекратило все неэкстренные выходы в открытый космос и начало расследование, чтобы выяснить, что именно произошло. Загрязнения, попавшие в систему, вызвали сбой водоотделителя, и вода попала в шлем всего через 30 минут после предполагаемого 6,5-часового выхода в открытый космос. Данные о характеристиках скафандра, графиках технического обслуживания и предыдущих экспедициях были разбросаны по слишком многим разным местам. Когда НАСА приступило к сбору всех возможных данных о ситуации в рамках расследования, это оказалось задачей астрономических масштабов. Коллин Эстес — директор по разработке программного обеспечения и главный архитектор Математического научно-исследовательского института технологий (MRI Technologies), который сотрудничает с United Technologies Corporation Aerospace Systems, компанией, которая создает и обслуживает скафандры для космических полетов (EVA) в НАСА. Как только масштаб проблемы с данными был раскрыт, он и его команда взялись за создание сквозной системы для данных о полном жизненном цикле скафандров. Но помните, это государственная работа, поэтому ее нужно было сделать хорошо, быстро и как можно дешевле. Он выбрал Node.js, чтобы заставить его работать. «НАСА всегда стремится найти способы повышения эффективности и выяснить, как лучше всего финансировать конкретный проект — ни одна копейка не должна быть потрачена впустую», — сказал Эстес. «Мы восприняли это как вызов, чтобы не только продолжать поддерживать наши системы сегодня, но и осуществить эту сознательную миграцию в облако с помощью этого веб-API и сделать это без дополнительных контрактных затрат. Моя модель была сосредоточена на создании корпоративной архитектуры Node.js на основе API.

Система, которую он создает, использует архитектуру микросервисов с отдельными API и приложениями, встроенными в Node.js, для перемещения данных, связанных со скафандрами EVA, из трех отдельных устаревших баз данных в облачную базу данных. Теперь пользователи могут запрашивать в этой одной базе данных все, что сокращает время доступа к исчерпывающему набору данных примерно на 300 процентов.

Почему Node.js?

Начнем с того, что команда Эстеса уже писала приложения с большим объемом JavaScript. «Когда мы выбрали Node.js, одним из наших преимуществ была сосредоточенность на одной платформе», — сказал он. Вот некоторые другие ключевые причины, по которым НАСА выбрало Node.js:

• Относительная простота разработки приложений для передачи данных с помощью JavaScript и знакомство всей организации с языком программирования, что позволяет сократить время и затраты на разработку.

  • Асинхронный цикл событий Node.js для операций ввода-вывода делает его идеальным решением для облачной системы баз данных, которая принимает запросы от десятков пользователей, которым срочно нужны данные.
  • • Менеджер пакетов Node.js, npm, невероятно хорошо сочетается с Docker для создания архитектуры микросервисов, которая позволяет каждому API, функции и приложению работать плавно и независимо. Это побуждает каждую из трех устаревших систем баз данных хорошо работать друг с другом, пока данные передаются в облако.

Node.js переносит большие данные в облако, чтобы астронавты могли жить и работать в космосе

Что MRI строит, так это новую архитектуру корпоративной базы данных, основанную на Node.js. Эта архитектура построена на полностью несвязанных API-интерфейсах модулей данных и приложениях, работающих как независимые микросервисы. API-интерфейсы отправляют данные документов из устаревших баз данных Oracle и Microsoft SQL Server в экземпляры RethinkDB, работающие в Amazon Web Services, для индексации с помощью ночных заданий Extract-Transform-Load (ETL).

«С этими API мы также перешли к созданию серверных приложений Node.js на основе этих новых данных», — сказал Эстес. «Данные, хранящиеся в RethinkDB из прежних версий, каждую ночь индексируются в Elasticsearch. Мы можем сопоставить записи метаданных из наших структурированных баз данных с фактическими PDF-файлами и проектными документами». Как только эти документы переносятся в облако и на S3, система выполняет оптическое распознавание символов, и результаты включаются в метаданные в Elasticsearch, поисковой системе с открытым исходным кодом. «С учетом этих двух вещей эти ночные задания ETL могут создать точку интеграции между структурированными данными, бумажными документами и бумажными данными», — сказал Эстес. Следующим этапом является продолжение создания архитектуры микросервисов и создание приложений Node.js для передачи данных и запросов с конечной целью полной замены устаревших систем. Загвоздка: вы не можете прерывать повседневную работу, пока астронавты все еще находятся в космосе, совершая выходы в открытый космос. Таким образом, пользователи по-прежнему могут использовать новую или старую систему, в зависимости от того, какая из них подходит для работы, поскольку база данных RethinkDB NoSQL также каждую ночь отправляет данные обратно в устаревшие базы данных. «Пользователи могут вводить данные в одном месте, а затем убедиться, что они работают в старой системе», — сказал Эстес. «Это затратно с точки зрения времени разработки и сложности, но это лучший способ постепенной деконструкции монолитного приложения 20-летней давности. Это займет больше времени, но, в конечном счете, скорость изменений для нашего сообщества пользователей — это то, с чем мы можем справиться как с бизнесом и поддерживать безопасность нашего скафандра».

npm и Docker надежно закрывают шлюзы

Эстес сказал, что все функции базы данных высокого порядка разделены на отдельные приложения. То, что сегодня является одной системой форм и отчетов Oracle, в конечном итоге станет набором из 18–25 отдельных модулей приложений и модулей API. Это обеспечивает доступность и доступность данных, в то время как старые базы данных иногда отказывались работать друг с другом.

Эстес использует Docker, чтобы убедиться, что все работает гладко, и избавиться от кошмара управления версиями. Docker «контейнеризирует» приложения, поэтому все, что им нужно для запуска — код, среда выполнения, инструменты, системные библиотеки — живет независимо и отдельно от остальной системы. «У нас есть несколько сервисов Node.js, работающих на одном хосте, и некоторые из наших зависимостей для подключения к Oracle требуют более старых версий Node.js, чем другие наши сервисы», — сказал Эстес. «Docker позволяет нам делать это, не прибегая к наименьшему общему знаменателю. Если в прошлом одно несоответствие сдерживало бы нас, то теперь, с нашей реализацией Docker, каждый из них представляет собой собственную автономную песочницу и пересматривает все, что ему нужно. Это не зависит от других». Цель состоит в том, чтобы убедиться, что данные перемещаются в облако без ошибок и доступны в любое время. Когда на кону стоит безопасность астронавтов, небольшие сбои и перебои в обслуживании превращаются в ситуации жизни и смерти. Node.js помогает обеспечить безопасный дом для всего и каждого — от данных о выходе в открытый космос до космонавтов в космосе.