She使用手册
Devfile和Workspace的概念
随着互联网等新兴科技公司的市值飙升,码农以及关于码农的故事迅速进入大众的视野,相应地,软件开发这个行当也成为我们择业的热门选择之一。在我开始工作的那个时候,我们使用一款叫SourceInsight的软件去编写我们的C语言代码。这款软件体积很小,安装在程序员的本地计算机上,运行流畅,功能强大,
-
语法高亮(Syntax Highlighting)
-
自动格式化(Automatic Formatting)
-
自动补全(Autocomplete)
-
跳转到定义(Jump to Definition)
-
项目内查找引用(Find References in Project)
-
高级文本和符号搜索(Advanced Text and Symbol Search)
等等,这些功能是这款软件的标配。有了这款软件编辑工具,我们就可以开发出大型软件工程,然后将这个工程上传到Linux开发机,写MakeFile去编译生成可执行文件,当然这款软件也支持外部模块,如语法检查(Lint)工具。与此同时,Java语言正如火如荼地攻城掠地,而基于微软的Visual Studio,如C++、.Net等的地盘逐渐被蚕食;印证这种趋势的是,各地Java培训班办的风生水起,成为当时的蓝海。印象最深刻的是,当时我有一做美工的朋友竟然会大几千(那时的几千是值钱的)学习Java,徜徉在SourceInsight之美之中的我还很疑惑这个怎么这么值钱。
与之相对应的是,Eclipse迅速成为软件工程师(那时还没有码农这个词)的标准IDE,特别在做上层应用开发时。我们的Devfile和Workspace概念就是从这条主线发展而来。
但是,当我们的软件系统越来越庞大时,如微服务系统,我们需要安装的工具也越来越多,外部依赖的环境也越来越复杂,单机已经不能开展软件开发调试工作。相应地,环境的一致性也成为码农最头疼的主要问题之一:A开发的代码在B的环境下不能正常工作,尽管A在自己的环境测试没有问题;由于系统的复杂性,需要准备一系列类似于生产的环境用于开发,这又导致软件工程师需要自己搭建一套准生产环境,但是受限于资源,这个准生产环境往往是生产环境的阉割版、而且由于不能在软件工程师本机上完成这个准生产环境的搭建而导致这种用于开发测试的环境也不能人手一份,这又徒增了码农的烦恼。
编程语言在发展,IDE工具也在跟进。
基于协同开发的考虑,网络IDE是一个选择,因此产生了一批批做在线IDE的公司。
编程语言是丰富的,而同一个软件项目也不一定选择一种编程语言、一种框架,这要求软件工程师需要安装多种IDE,如前述的Eclipse、IDEA、PyCharm、JetBrains、Komodo、Sublime、古老的Vim等等,这种放羊式的粗放发展也是软件工程师的噩梦。于是乎,All In One成为救命稻草,在这种背景下,语言模型LSP(非人工智能领域的自然语言中的语言模型)架构了这种全新的IDE,而历史又绕回了微软:开源了其单机版的Visual Code,编程的各种标配功能,如语法检查与补全,成为这款软件的核心功能;LSP模型也让其能够处理各种编程语言的软件项目开发。
正是有了上述的技术铺垫,基于浏览器的IDE应运而生,有了Visual Code的微软很自然地开发出了相应的网络IDE;为适配国内的开发实际,特别是大数据、人工智能的开发实际,我们开发出She软件开发云计算平台。
有了上面的梳理,关于Devfile和Workspace的概念便不难理解了。如果我们要做一个电商系统,我们需要分布式数据库软件、需要各个微服务的子系统、需要一个能够编写调试的IDE、需要一些辅助工具集,那么最好的办法是,我们将这些服务和工具安装在一个个容器上形成一个与生产环境相同拓扑结构的准生产环境;为了支持这个环境的随时一致的搭建,我们将这个环境的拓扑结构画在一张独立于语言的稿纸上,而这个稿纸就被定义为Devfile、独立于语言的实现方式是带格式文本如yaml。
如果说Devfile是草稿,是静态的,那么将这个草稿建设起来的就是Workspace,即Workspace是物理的、而Devfile是逻辑:Workspace包括了物理上运行的各容器或物理机实体、端口、命名等一干看得见摸得着的资源。详细情况请观看视频。