GENI将成为一个包含众多计算和联网技术的,以及复杂的软件服务的复杂分布式系统。每个人都明白建设GENI是件重要的事业,然而设施被及时建设,并符合预算是非常重要的。尽管好的管理措施必将被采纳,但我们仍然需要确定一套我们认为对成功建设GENI设施非常重要的工程设计原则。
第一,从一个优秀的系统体系结构开始。
用来搭建GENI的组件系统越复杂,这些组件之间的依赖关系变得不可控制的风险就越大。因特网本身的成功在很大程度上归于它的那种允许组件之间相互独立的体系结构。GENI的体系结构按照同样的设计原则来指导,因此,独立的技术可以看似相互独立地插入到整个管理框架当中,独立的分布式服务可以被开发而不需要繁重的协调。这个技术方案对于管理建设进程的能力是相当关键的。
第二,只建设你知道如何建设的东西。
因为软件是可塑的,并且功能上有变化的趋势。指定系统“应该”有的功能比让那些功能协同工作简单得多。如果不加检查,这可能会导致系统变得过于复杂而不能工作。有人会抱怨我们所做的超越现实太多。诚然,但是把这些元素综合起来,则是革命性的。
第三,逐步建设,考虑经验和用户反馈。
一个在计算机科学领域显而易见的道理是,在软硬件开发的过程中,错误被发现得越早,则解决错误的开销越小。实现这一点最好的办法,就是在最早的时候将系统投入使用,得到鲜活的经验,并根据这些反馈逐步地改进系统。
第四,设计开放的协议和软件,而不是封闭的。
对于我们来说,GENI相对于其它大规模软件系统建设更能推动我们的地方在于,它的用户——以计算机科学研究群体为主——本身拥有修复和增强系统的能力,只要我们给予他们合适的工具。这一点是独特的,因为我们是为我们自己搭建系统,而不是为别人搭建。如果结果是独占它或者抛弃它,那么这个项目就很可能垮台。我们的目标是搭建起一个在GENI建成之后仍然可以用有效的方法继续发展的系统。所有计算机科学研究群体做出的成功的大规模系统,其共性就是,它们会在系统交付使用后继续被他的用户所修改。
第五,利用现有的软件。
尽管GENI的一些方面需要从头开始编写,我们仍然希望能够利用大量现有的软件。充分使用这些软件是非常重要的,而且,从某种程度上来说,这样做我们可以使用到位的系统来保持这些软件常常更新。软件需要配置,而不是直接拿一个软件包来用,也是需要时间的。这就提出一个目前由认证来维护修改的软件包的问题。同样的争论也存在于可用的商业硬件中。
第六,利用现有的基础设施。
尽管GENI将要用目前因特网还没有的联网概念来提供一个试验环境,GENI仍然需要使用今天的因特网作为一个“自举”机制。GENI不能基于对于当今因特网的任何假定来建设——那样,新的设计可用以后就可以用来取代今天的协议,也不必为使用今天的网络(有时并不完美)来建设GENI而感到抱歉。将GENI成功地建立在一个尚未得到证实的网络体系结构或者承载能力之上的策略将面临更大的风险。
尽管这次讨论专注于在GENI建设过程中的合理工程实现,但在建设完成之后,考虑管理和维护GENI设施的运作成本同样是重要的。我们相信同一套有效的工程建设原则可以让建设进程可控,也就同样适用于建设可持续发展的系统。