Falamos sobre os engenheiros que escrevem o código que opera as naves espaciais SpaceX. Agora vamos falar sobre as pessoas que constroem e mantêm as ferramentas e processos que capacitam os desenvolvedores e, em última instância, ajudam a cumprir a missão de voar astronautas para o espaço.
Avance Network conversou com Erin Ishimoticha, uma engenheira do grupo Software Delivery Engineering da Choctaw Nation of Oklahoma. Ishimoticha, engenheira em tempo integral por 15 anos, começou sua carreira com scripts shell e Perl e agora está na SpaceX há cerca de dois anos.
Verifique, verifique e verifique novamente
O trabalho da Engenharia de entrega de software, de acordo com Ishimoticha, é coordenar boas práticas de teste e desenvolvimento de software em SpaceX, garantindo que todos que escrevem códigos para espaçonaves usem métodos de controle de versão adequados e que sejam submetidos a testes automatizados e humanos gerenciados em um sistema de integração contínua (CI).
“Nós desenvolvemos e mantemos nosso próprio sistema de CI”, disse ela. “Temos um serviço da web que executa relatórios - ele ingere telemetria de testes de software e hardware, cria gráficos e tem suas próprias afirmações de que é executado nos dados, produzindo um relatório sobre o desempenho do software.”
Isso significa que o pessoal da Engenharia de entrega de software está fazendo desenvolvimento, teste e DevOps, com uma equipe de cerca de 15 engenheiros, incluindo uma equipe dedicada de Engenharia de Confiabilidade de Software (SRE).
O controle de qualidade do software da espaçonave é diferente do que os aplicativos normais para empresas ou consumidores. Os requisitos são muito altos. “Você pode olhar as classificações de software da NASA - há muitas informações disponíveis publicamente sobre isso. Fazemos algo semelhante. Existem vários padrões de qualidade diferentes que se aplicam ao software, desde ferramentas de CI até o software de voo que fornece funções críticas de segurança para a tripulação.
Por causa disso, “há muitas coisas extras que você precisa fazer durante o processo de desenvolvimento antes de poder fazer a fusão”, diz Ishimoticha. “Nós temos um monte de checagem e checagem dupla. Temos condições de revisão de solicitação pull que devem ser atendidas, até mesmo testes pós-mesclagem para garantir que as alterações feitas enquanto uma solicitação pull estava em andamento não interferem na alteração que acabamos de mesclar. ”
Assistindo um ao outro
O processo de desenvolvimento parece ser ágil em espírito, com design orientado a testes e vários engenheiros de forma incremental a cada mudança de código.
“Na maioria das vezes, trabalhamos com o conceito de um engenheiro responsável, que tira um tíquete - um problema - do acúmulo.” O engenheiro responsável analisa a questão a partir da compreensão do problema e o acompanha, possivelmente até implantando o novo software.
“Se eu pegar uma multa, primeiro vou entender o problema e tentar reproduzi-lo. Em seguida, eu projeto a correção ou recurso, implemento a correção e garanto a cobertura do teste e o teste funcional em um ambiente isolado. Em seguida, emito uma solicitação de pull. É minha responsabilidade encontrar alguém para revisar o PR. ”
O processo não termina quando a revisão é concluída. “Quando o PR é mesclado, é minha responsabilidade garantir a próxima execução de teste nas aprovações do mestre em CI. E então começamos a verificação. ”
O ambiente de CI é baseado em [HT Condor], um sistema de gerenciamento de carga de trabalho para trabalhos de computação intensiva que se originou com o High Throughput Computing Group da University of Wisconsin Madison. É valorizado na SpaceX por seus poderosos recursos de enfileiramento, priorização de trabalhos e gerenciamento de recursos - especialmente para os testbeds HITL (mais sobre isso posteriormente).
O Condor gerencia cargas de trabalho de maneira semelhante a um sistema de lote tradicional, mas pode fazer melhor uso dos recursos ociosos do computador. Ishimoticha diz: “executamos cerca de um milhão de compilações de CI por mês”.
Gerenciando construções e foguetes na mesa
A plataforma é construída em torno do PostgreSQL para gerenciar os metadados sobre as compilações, resultados de teste e outros artefatos, junto com muito Python e C / C ++.
Python “é para execução de teste de backend, orquestração de construção e todos os nossos servidores web são baseados em python. São muitos pequenos scripts e muitos grandes serviços da web. Angular e JavaScript nos serviços da web para o front-end e um pouco de Typescript, o que é ótimo, sou um grande fã. ”
O Docker é muito usado, junto com um pouco de Kubernetes. “O Docker é muito usado para compilações efêmeras.” Ao usar o Docker, eles podem garantir que cada construção seja executada em um ambiente limpo. “Ser capaz de colocar essas tarefas dentro do Docker significa que podemos jogar fora os efeitos colaterais todas as vezes, o que é maravilhoso.”
Ficamos imaginando como a Engenharia de Entrega de Software trabalha com o hardware. “Não trabalhamos tanto com o hardware do veículo quanto com o hardware do data center”, disse Ishimoticha. “Nós reconstruímos os sistemas de funcionários e adicionamos hardware ao sistema de CI o tempo todo. Temos cerca de 550 trabalhadores de pequeno, médio e grande porte executando diferentes tipos de trabalho. Um pequeno trabalhador tem dois núcleos, enquanto nossos grandes trabalhadores têm 28 núcleos e 32 gigabytes de memória. ”
Existe uma parte interessante do trabalho que envolve brincar com o hardware real. “Também temos uma tonelada de testbeds conectados ao sistema CI. Chamamos esses testes de HITLs, pronunciado 'hittles', significando hardware-in-the-loop. Eles são únicos, feitos sob medida, literalmente todas as entranhas do foguete colocadas sobre a mesa. Não tem nenhum tanque de combustível e não tem nenhum motor, mas tem, você sabe, todos os computadores de vôo e sensores. ” Ela deu uma risada. “Temos um para os assentos no Dragon 2 e ele tem os atuadores, podemos mover os assentos.” Você não precisa ser um cientista de foguetes para se tornar um engenheiro de teste, mas é muito divertido ser um engenheiro de teste que consegue para trabalhar com foguetes físicos reais.
Se você quiser saber mais sobre como trabalhar com software na SpaceX, confira a página de carreiras deles. Para as outras postagens sobre esta série, você pode acessar nossa comunidade
O Avance Network é uma comunidade fácil de usar que fornece segurança de primeira e não requer muito conhecimento técnico. Com uma conta, você pode proteger sua comunicação e seus dispositivos. O Avance Network não mantém registros de seus dados; portanto, você pode ter certeza de que tudo o que sai do seu dispositivo chega ao outro lado sem inspeção.