晰,显然是胸有成竹。
但陈飞立刻打断了他,指着架构图上的“代码沙盒”部分:“这个沙盒的安全性如何保证?使用Docker虽然轻量,但存在逃逸风险。我认为应该从底层系统调用拦截入手,参考Seccomp-BPF机制,设计一个安全的隔离环境,这是判题系统的核心,必须万无一失……”他开始引经据典,大谈特谈各种安全模型和系统调用过滤的原理,完全偏离了架构讨论的主题。
林小圈试图把话题拉回来:“陈飞,安全性确实重要,但我们第一步是先确定整体框架和模块划分,细节可以后面再优化。周博瀚的架构我觉得思路是清晰的……”
“细节决定成败!”陈飞推了推眼镜,语气异常严肃,“如果不从最开始就考虑周全,后期重构的成本会非常高!我认为我们应该先花时间研究一下现有的开源沙盒方案,进行安全性评估……”
周博瀚的脸色已经沉了下来,他有些不耐烦地用马克笔敲了敲白板:“我们现在是在做一个简易的、原型的核心模块,不是要开发一个商用的、承受百万级并发的系统!你说的那些东西,复杂度远超项目要求,两周根本实现不了!”
“但这是正确的方向!”陈飞坚持道,“我们不能为了赶进度而牺牲代码的质量和系统的健壮性!”
眼看讨论要陷入僵局,林小圈只好站出来打圆场:“好了好了,这样吧,架构大体按周博瀚的思路来,陈飞你重点关注判题逻辑和沙盒安全性的设计,我们先实现基础功能,如果时间允许,再考虑优化安全部分,怎么样?”
最终,在一种略显压抑的气氛中,三人勉强达成了初步分工:周博瀚负责整体架构搭建和用户交互模块;林小圈负责判题逻辑的核心实现和数据库设计;陈飞负责研究安全的代码运行沙盒方案,并协助设计核心判题算法。
分歧,从这一刻就已经埋下。
项目在磕磕绊绊中推进。他们使用了Git进行版本控制,这本来是协作的利器,却成了矛盾的放大器。
周博瀚效率极高,很快搭好了基础框架,并实现了用户提交代码的接口。他习惯小步快跑,频繁提交。
林小圈也稳步推进,开始编写判题逻辑,针对不同的编程语言设计测试用例。
而陈飞,则彻底沉浸在了他的“完美沙盒”研究中。他查阅了大量英文文献,尝试编译各种底层库,在本地虚拟机里反复测试。几天过去了,他除了提交了几篇相关的论文链接到项目Wiki外,代码库里的
本章未完,请点击下一页继续阅读!