The process of engineering and deploying applications in the edge/embedded space is massively complicated by the non-homogeneous nature of the software stack and the complexity of diagnostics & debugging. Often different languages and runtimes are used for different components of the system forcing designers to, irrevocably, make decisions about what components run on the periphery and what components run in the cloud. Further complications arise when handling and diagnosing failures in the system. Multiple stacks and, often, limited support for debugging complicate the already difficult task of analyzing distributed applications. This paper presents a work-in-progress vision for a unified language and runtime system that allows applications to scale seamlessly across the edge and cloud. Using a single language and runtime, applications can be developed and tested in a single environment, and then deployed to any component of the system -- from resource limited controllers to large cloud servers. Further, we outline how this retargetable stack can provide integrated diagnostics and debugging tools that allow developers to record and replay distributed events locally for analysis and debugging.
翻译:在边缘/嵌入式领域工程化与部署应用的过程,因软件栈的非同质特性以及诊断与调试的复杂性而变得异常复杂。系统中不同组件常采用不同的语言和运行时,迫使设计者不可避免地要对哪些组件在边缘运行、哪些在云端运行做出决策。当处理与诊断系统故障时,会衍生更多复杂问题。多个软件栈以及通常有限的调试支持,使得本已艰巨的分布式应用分析任务雪上加霜。本文提出了一项尚在进行中的统一语言与运行时系统愿景,该框架允许应用在边缘与云端无缝扩展。通过采用单一语言和运行时,开发者可在统一环境中开发与测试应用,随后将其部署至系统任意组件——从资源受限的控制器到大型云服务器。此外,我们概述了这种可重定向软件栈如何提供集成化的诊断与调试工具,使开发者能够本地记录与回放分布式事件以进行分析与调试。