Developing Software in a Degraded Edge Environment

4 mn read

Every command and control, weapon, or security platform is driven by software. As such, the Department of Defense (DoD) is working to modernize its software practices to provide the agility to deliver resilient software at the speed of relevance [1]. Marines, Sailors and service members alike will find themselves in Denied, Disrupted, Intermittent, and Limited (DDIL) environments. It is more important than ever that innovators prepare, understand, and strive in these environments. Being a Marine I want to be prepared to develop in any clime or place.

For the better part of the last year, I have found myself afloat in these degraded environments. I had to do research, user studies, monitoring, and development all with limited and degraded access to tools and resources all developers commonly require. It was a unique learning experience that I am grateful to have.

Understand the Degraded Environment

Deliberate preparation and research from leaders are key to enabling the warfighters. Knowing what to provide and how to provide capabilities at the edge with modern software instead of easy legacy solutions will directly benefit the mission, software and commander.

Innovators need to understand the concept of a degraded environment. You will never fully understand the scope of difficulty, until you have worked in it. A degraded environment is an environment that has lack of access to external data or services, often necessary for operational and security reasons. Warfighters know their job, the condition and the problem. Providing them the capability and technology to innovate in these environments will set you and your unit up for success.

Research and Development

What is the user’s current solution? If you have been in the military long enough, you’ll realize that service members will utilize any and all tools they are provided. You will find battle tracking, Landing Craft Air Cushion operations, or even when Airmen utilized Google docs to track flights in and out of Kabul, this is all done within sheet applications like excel / Google Docs, just because you can, should we? What would it look like if we built tools to meet requirements instead of box ourselves in with tools and just make it work?

Tools like excel and Google Docs are great for the right situation, but often fall short when security, scaling, or integration is a priority. Providing capabilities with proper security for data and the workflow is necessary for service members. These tools have limits to size and reach, developing custom software will allow for just the possibility to scale. We need to develop solutions to reach the masses not singular instances.

As someone who enjoys building software a large portion of that is research and development into the software I am building. What technology do I need to use to provide the best solution for the user? For a lot of people, the first place you are going is often Google. Google might not be accessibly in your environment and there really isn’t an alternative, so try to find a way to substitute. Research beforehand the pre-existing capabilities and technology that could fit the niche you trying to develop in. Below are some things that might make your life easier than mine.

Kiwix – lets you access the free knowledge. Even offline. (kiwix.org)

We had this during our deployment, having Stack Overflow, Server Fault, a plethora of Ted Talks, and other stack exchanges provided Marines and Sailors a source to do research for their studies no matter what it be.

local-npm – Local and offline-first npm mirror (github.com)

local-pypi – Minimal PyPi Server (github.com)

You never know what packages you need, starting a local NPM / PyPi server can provide developers a variety of packages to develop with. Unless you want to develop with just built in capabilities, extending the reach of open source software to your environment will enable rapid development.

Offline Docker Containers – Docker save / Docker load (docs.docker.com)

Operating systems run all the underlying solutions. Having an access and an excess of offline tar images will never hurt. Images that span languages, operating systems and database architecture will provide you the capability to develop and deploy anywhere. Containerized applications will provide flexibility and future scalability if the application is turned over to a team.

Benefits of Developing at the Edge

By no means is developing at the edge easy, but by doing so we allow for faster product development and deployment. The developers will be closer to the warfighter and will be able to iterate based on user feedback more quickly, and then in the end providing a solution to the warfighter sooner. This is responsive development. Create solutions, respond to the user feedback, develop, iterate.

Conclusion

Developing Software in a degraded environment is not only a difficult task for the developer but the user, the leader and commander. However, preparing yourself and others with the tools, technology and understanding the limits and capabilities that your environment is constrained to will support the entire force.

Further Related Reading

Secure Edge-Native Architecture – Secure Edge-Native Architecture (SENA) for Securely Deploying and Managing Edge Computing Environments at Scale (spectrocloud.com)

SENA is an enterprise-ready solution architecture built on zero-trust principles, to effectively deploy, provision, operate and manage Kubernetes edge environments at scale.

What is Edge Computing? – Edge Computing Explained – AWS (amazon.com)

Edge computing is the process of bringing information storage and computing abilities closer to the devices that produce that information and the users who consume it.

[1] Document: DoD Enterprise DevSecOps Initiative Ref Design 2.0: 1.1 Background

https://dodcio.defense.gov/Portals/0/Documents/Library/DoD Enterprise DevSecOps-Pathway to a Reference Design_DoD-CIO_20211018.pdf

 

Recommend0 recommendationsPublished in Technology & Innovation

Related Articles

Responses