[Перевод] Софт для SpaceX (интервью с разработчиками)
Команда прикладного программного обеспечения разработала ERP-систему для каждого этапа создания ракеты. «Одной из наших обязанностей является создание программного обеспечения, используемого практически всеми сотрудниками компании для доставки ракеты на площадку и подготовки ее к запуску», — объясняет Энтони Роуз, менеджер по разработке программного обеспечения. «Это включает в себя цепочку поставок, производство, финансы, инвентаризацию и т.д.».
От закупки и получения сырья, создания и выполнения рабочих заказов для создания космических аппаратов, отслеживания качества и управления изменениями, внедрения процедур для запуска ракеты — система должна быть достаточно надежной, чтобы справиться с производством и запуском Falcon 9. Эта ракета может доставлять грузы или людей на Международную космическую станцию или доставлять спутники на орбиту; надежность является первостепенной задачей.
«Одним из примеров нашего применения является система управления деталями, которая говорит, что определенная деталь существует на заводе. Она была изготовлена. Где же она находится? Наша система помогает этой детали переместиться в то место, где она должна быть, чтобы ракеты строились как можно эффективнее. Другой пример — управление изменениями и отслеживание дефектов. Мы должны тщательно отслеживать, как детали связаны друг с другом и как дефекты или изменения в одной конструкции будут отражаться на всех остальных деталях ракеты», — объясняет Роуз.
Программный стек — от монолита к микросервисам
Стивен Сепанлоо, менеджер по разработке программного обеспечения в команде, рассказал нам о программном стеке и о том, как он изменился за четыре с половиной года работы в SpaceX. «До недавнего времени он был эволюционным, а не революционным. Четыре года назад у нас были AngularJS, C# и реляционный бэкенд MSSQL, что было очень стандартным транзакционным стеком для одностраничного веб-приложения. Эти приложения все еще существуют, но мы перешли на использование Angular для более новых приложений». Команда также начала использовать контейнеризацию и создавать микросервисы, а также отказалась от SQL-сервера в пользу PostgreSQL.
Кайл Мадония работает в SpaceX чуть менее семи с половиной лет и занимает должность старшего менеджера в команде прикладного программного обеспечения. «Когда я начинала работать, мы как раз переходили от веб-форм ASP.NET и начинали использовать KnockoutJS, так что это было еще до Angular».
В монолитных приложениях, которые SpaceX использовала в то время, некоторые приложения работали на собственном JavaScript-фреймворке, а другие приложения начали переходить на KnockoutJS. «В 2014 году мы начали строить новую архитектуру. Забавный факт, наше старое решение называлось DS9, а новый подход — TNG, потому что наша команда любила Стартрек», — со смехом говорит Мадония. Команда начала использовать AngularJS и рассматривать идею микросервисов.
«Одна из проблем с монолитом заключается в том, что вам приходится развертывать все части вместе. Если что-то ломалось в нашей цеховой системе, но у нас были большие изменения, которые мы хотели выпустить в системе инвентаризации, нам приходилось ждать, чтобы развернуть изменения», — говорит Мадония. «Мы работали в режиме еженедельных релизов, и нам нужно было действовать быстрее». Для этого команда сосредоточилась на изменении операций, чтобы свести к минимуму обслуживание старых приложений.
В 2019 году, когда создание систем для Starlink стало реальностью для SpaceX, команда увидела возможность продвинуться дальше в этом направлении. «Нам нужна была новая система управления производством для Starlink, потому что мы сразу поняли, что строительство спутниковых антенн будет отличаться от строительства ракет. Например, нам не нужно было целое цеховое приложение для этого завода», — говорит она. Команда начала создавать что-то вне Warp Drive, монолитной ERP-системы, которую она использовала в течение многих лет. «Она использует ActiveMQ для асинхронных вызовов API, и она живет отдельно от основной системы».
Затем команда создала совершенно отдельную систему для операторов, работающих над спутниковыми «созвездиями», новую систему телеметрии и все необходимые приложения для клиентов Starlink. «Каждый сервис является отдельным и имеет очень специфические правила, которые регулируют связь и зависимости между ними. Вы всегда можете использовать API для получения необходимой информации, но каждый сервис не привязан ни к чему другому».
Вверх, вверх и вдаль
Для команды, занимающейся программным обеспечением вне кораблей, большие изменения коснулись не столько языков программирования, которые они используют, сколько разнообразия проектов, которые они поддерживают. «Для меня интересно то, что мы масштабировали, по сути, четыре параллельных бизнеса: коммерческая доставка полезной нагрузки с помощью Falcon, полет человека в космос с помощью Dragon, глобальный интернет-провайдер с помощью Starlink и межпланетные перевозки с помощью Starship», — говорит Сепанлоо. О, и не забудьте о развитии Starbase в Техасе. «Многие инновации были связаны с тем, как мы работаем и как мы адаптируемся как организация, чтобы поддерживать эти различные направления бизнеса. Мы не увеличивали размер нашей организации — вместо этого мы искали пути повышения эффективности. Например, мы приблизили инженеров к проблемным местам, чтобы минимизировать время, необходимое для понимания проблемы и создания надежного решения».
Мысль этой команды заключается в том, что достичь мастерства в своем деле можно только в том случае, если человек, способный создать изменения, является тем же человеком, который понимает, что нужно изменить. Это высокопарный способ сказать, что решения по управлению продуктом и инженерные решения находятся под одной крышей и, в идеале, у одного человека или команды.
Инженерам предлагается выяснить, что нужно сделать, объяснить бизнес-модель — на что это влияет и почему это стоит сделать — и затем построить масштабируемое и производительное решение, которое решает проблему. «Это очень эффективный процесс, похожий на то, как, по вашему мнению, создается стартап», — говорит Сепанлоо. «Мы действительно сосредоточились на том, чтобы максимально приблизить наших инженеров к реальной системе, на которую они воздействуют».
Как объясняет Роуз, задача команд, поддерживающих Starlink, состоит в том, чтобы понять, «как переключить компанию, которая была сосредоточена на создании высокотехнологичных ракет-носителей, на создание электроники потребительского класса, которая должна масштабироваться». Чтобы ознакомить своих инженеров-программистов с конвейером, на котором будут собираться Starlink, компания переместила их поближе к металлу.
«Исторически сложилось так, что мы сидели в главном здании вместе со всеми другими командами разработчиков программного обеспечения — это было то же здание, где располагался ракетный завод, но мы сидели на другом этаже. Сейчас моя команда находится прямо рядом с линией сборки Starlink. Мы перевели всех сюда, чтобы мы могли находиться на линии, понимать ее и создавать системы, которые незнакомы многим инженерам-программистам», — говорит Роуз. «Мы работали посменно на разных станциях линии, чтобы понять, в чем заключаются трудности. С тех пор мы смогли начать создавать некоторые инновационные решения — и это только вершина айсберга».
Данные, данные повсюду — или нет
Starlink не только внедрил новые идеи в производственный процесс, но и привел к появлению новых идей, связанных с получением и хранением данных. «Когда вы впервые пробуете что-то новое, например, меняете фундаментальную конфигурацию ракеты, важно иметь возможность анализировать эти данные», — говорит Сепанлоо. SpaceX помогла стать пионером идеи многоразовых ракет, что делает данные о летных характеристиках особенно интересными. Вторая ступень выбрасывается после использования, но ускоритель (первая ступень) и обтекатели являются многоразовыми. «Наши аппараты не являются расходными материалами. Сейчас мы совершили девять полетов на одном и том же ускорителе, что является для нас важной вехой». Данные в зависимости от увеличения скорости полета очень важны для понимания аппаратуры».
Даже те операции, которые находятся в стадии опытно-конструкторских испытаний, дают критически важные данные. «Когда звездолет SN15 совершил жесткую (и захватывающую!) посадку, люди предполагали, что мы будем недовольны, но мы праздновали», — говорит Мадония. «Мы сделали так много успешных маневров и смогли собрать тонну ценных данных, чтобы улучшить нашу следующую попытку».
Для Starlink необходим другой подход. Вместо обработки данных от запуска ракеты, который имеет четкое время начала и окончания, спутники и сеть постоянно передают данные. Хотя у команды уже было хранилище данных для ракет, они создали новое хранилище телеметрических данных для Starlink, используя .NET 5, Kafka, HBase, HDFS, Docker и Kubernetes. Эта система предназначена для горизонтального масштабирования, чтобы обеспечить возможность использования очень масштабных телеметрических данных, но команда продолжает следить за тем, чтобы хранить только минимально необходимый объем данных. Стратегия заключается в том, чтобы не застрять в болоте данных, а вместо этого собирать только необходимые данные, анализировать их и пробовать снова.
Исследовать Солнечную систему
Роуз и Сепанлоо изо дня в день заняты деталями создания космических аппаратов. Но они не упускают из виду более масштабные задачи, которые решает их программное обеспечение. «Я думаю, что самое интересное, что происходит в SpaceX, — это большие цели. Количество транспортных средств, которые необходимо произвести для создания самодостаточной цивилизации на Марсе в разумные сроки, требует таких темпов производства, которых не было до того, что мы пытаемся сделать», — говорит Сепанлоо.
По их мнению, трудно не только создать вещь, но и создать вещь, которая создает вещь, что также представляет собой проблему».
От создания более умных фабрик для Starlink до автоматизации ручной работы операторов спутников и сетей, от создания отличного клиентского опыта для Starlink до инновационных программных решений для создания Starship и обеспечения того, чтобы их системы могли справиться с тяжелой программой запуска в 2021 году, — недостатка во вдохновляющих проектах нет. «Каждый год я думаю, что этот год будет таким захватывающим для SpaceX», — говорит Мадония. «И каждый год так и происходит —, но потом я снова думаю об этом на следующий год! Когда я начинала работать здесь, я и представить себе не могла, что буду работать над программным обеспечением, которое поможет создать глобального провайдера, способного обеспечить Интернетом труднодоступные места».
Команда рассчитывает быстро автоматизировать системы, поскольку машины становятся все сложнее и сложнее. «Именно в этом, как мне кажется, сейчас и заключается большая часть действительно интересных инноваций, чтобы превратить нас в компанию, которая сможет построить целый флот и управлять несколькими космопортами», — говорит Сепанлоо. «Для нашей команды это отличная возможность посмотреть на то, как мы создаем правильные системы, чтобы соединить цифровое и физическое».
Из этой же серии:
У вас будет возможность разрабатывать софт разного уровня, тестировать, запускать в производство и видеть в действии готовые автомобильные изделия, к созданию которых вы приложили руку.
В компании организован специальный испытательный центр, дающий возможность проводить исследования в области управления ДВС, в том числе и в составе автомобиля. Испытательная лаборатория включает моторные боксы, барабанные стенды, температурную и климатическую установки, вибрационный стенд, камеру соляного тумана, рентгеновскую установку и другое специализированное оборудование.
Если вам интересно попробовать свои силы в решении тех задач, которые у нас есть, пишите в личку.
Мы, пожалуй, самый сильный в России центр компетенций по разработке автомобильной электроники. Сейчас активно растем и открыли много вакансий (порядка 30, в том числе в регионах), таких как инженер-программист, инженер-конструктор, ведущий инженер-разработчик (DSP-программист) и др.
У нас много интересных задач от автопроизводителей и концернов, двигающих индустрию. Если хотите расти, как специалист, и учиться у лучших, будем рады видеть вас в нашей команде. Также мы готовы делиться экспертизой, самым важным что происходит в automotive. Задавайте нам любые вопросы, ответим, пообсуждаем.