Docker can provide several benefits for NASA projects that use Dart, such as:
- Simplified deployment: Docker enables easy deployment of Dart applications and dependencies across different environments, whether it’s on-premises or in the cloud. With Docker, the deployment process becomes much simpler as the same Docker image can be deployed on any machine that has Docker installed.
- Consistent development environments: Docker can help ensure that all developers working on a NASA project that uses Dart are using the same development environment. This can help prevent compatibility issues that can arise when developers are using different versions of tools, libraries, or operating systems.
- Improved testing: Docker can be used to create isolated testing environments that are separate from the development or production environments. This ensures that any tests performed are done so under the exact same conditions every time.
- Increased security: Docker provides a secure platform for deploying and running applications. With Docker, NASA projects that use Dart can take advantage of features like sandboxing, isolation, and access control to enhance the security of their applications and data.
Docker plays a mission-critical role
To avoid an asteroid collision, the DART (Double Asteroid Redirection Test) method is favored. The Johns Hopkins Applied Physics Laboratory team, in charge of this approach, has chosen a hazardous asteroid to test and determine the effectiveness of the method in real-world scenarios.
Designing software for this mission-critical application is an extremely challenging task. The physics of space creates a low bandwidth and low-density memory environment due to radiation impacts. The team has only one opportunity to obliterate the asteroid.
However, their primary challenge was the cost of hardware deployment, exceeding $300,000. As it wasn’t feasible to assign an individual system to each member, the thirty-strong development team had to share five systems, causing a severe time constraint. To overcome this, the team created a hack to emulate the hardware, allowing the team to work on their laptops and test on the production hardware. Docker was chosen to provide a virtual environment. X-11 and VNC servers were used inside the Docker container, enabling any team member to access the GUI from any container while maintaining NASA security policies.
The development environment consisted of four components: flight software, COSMOS open-source GUI ground system, testbed software, and the Docker environment. The flight software connects to the testbed container. The testbed connects to the COSMOS container, acting as the radio. The COSMOS container connects to the VNC container and utilizes Openbox to offer a GUI. This emulation provides complete hardware emulation, allowing the development team to work on their laptops, resulting in significant savings in development time and resources, and considerably reduced deployment timescales.