上网搜了半天也没找到“开发服务器”是用来干嘛的,我就按照自己的经验讲一讲好了。
代码(文件)仓储
开发服务器最重要的功能是提供仓储功能。我们用的最多的是代码仓储。 在CVS年代,甚至到SVN的年代,许多中小型开发团队都会配备开发服务器,然后写的代码没问题了,提交上去,ok收工。 然后CVS和SVN对文本文件和二进制文件的口味比较不挑(我感觉的,git就比较区分两种文件了,而且一般希望不处理二进制文件),会把编译好的安装包,服务器打包文件,文档(doc+jpg),甚至连一些需要预安装的库和程序也打包进来,仓储起来。
GIT
我们现在更多的是git。git关注于文本文件的变化,它的观察是以“行”为单位的。 通常我不希望在我们的git仓储中带上二进制文件如:doc、jpg、png、gif、mp3、avi等,甚至是pdf。(希望用html或者md来代替) 我们使用针对GIT的SAAS就好了,比如coding.net的git服务。
开发测试
API
比如我们的API服务器。
编译、运行
c++什么的,编译一个程序跑20分钟很正常,在自己机子上跑吗?太浪费时间了。 搞一个cpu、mem很强的服务器,把代码提交上去,跑编译。对,20分钟是服务器上跑的时间。 运行,搞个虚拟机来跑跑程序试一下。(我们一般不需要,装一个Firefox就够了。当然如果需要兼容ie,我就把这个任务交给你们这群使用windows的吧!)
Trace系统
就是bug追踪什么的。 像我们发任务啊,以前发任务不用这个,但是他们有工作汇报提交(windows共享)。 说到文件共享,我们原来公司的切图仔(美工的昵称)会切好图,然后扔到windows共享里,然后大吼一声(或者QQ一抖):文件放在xxx文件夹里。 还有一些公司运维相关也会被扔到开发服务器里来。像公司邮箱。
总结
在在线服务不成熟、网络慢、协作开发平台几近无的10年前,没有一个开发服务器(一般是本地)的,都不好意思叫研发团队! 他们也会备份,中小型团队一般每几个月拿个硬盘插到服务器上,拷贝一下。
远程开发服务器
比如我们的aliyun服务器。
优点
远程开发服务器的优势在于远程! 一般他们会叫做“云服务器”,其实就是自己的一个云主机。 托管了宽带、cpu、内存、用电。性价比高、稳定、安全。 文件丢失的可能性降低到原来模式的万分之一。
缺点
唯一不爽的就是占用公网宽带。相对的带来好处是哪里开发都一样。
干什么
上面说的开发服务器该做的一切事情,都可以用远程开发服务器来做。
代码仓储服务 && 协作服务
如github、如coding.net。 可以在我们的开发服务器中剥离这些功能。 毕竟部署和维护这些服务还是挺累人的。
离岸工作
其实不管是git仓储、coding.net的协作工具、aliyun的云开发服务器。 我们的配置都是往分布式开发方向靠近的。 否则的话,我们就上本地svn仓储、trac (wikipedia)、本地开发服务器了。(我真这样做过,trac系统svn本地服务器什么的,不过只有我一个人用着玩)
我觉得离岸工作,将是以后的趋势。 毕竟网络会越来越快的,沟通会越来越方便((全息)视频聊天会议),但是出行会越来越堵。
先人一步,早点学习,总好过追着吃尘。
本地开发服务器
啊,那还本地服务器什么,既然离岸开发都是趋势了?!
首先
首先,是趋势但是还没到,现在网还很值钱,而且就算是以后要离岸,也得先锻炼个2~4年才靠谱啊! 比如通过结对编程来锻炼,那得我在这边写,你在那边同步的看,并且可以聊天说说我哪里没写对。 而且人是需要有社会交流的,码农们你们不靠上班见见人,锻炼一下交际能力,以后怎么混社会啊?! 而且也不是真的所有人都互相不见面的。总而言之,以后部分项目组会通过离岸开发,部分会要求定期见面,还有的会要挤在一起写代码。 现在就已经存在这三类项目组了,会变的只是存在的比例而已。 而且那些个完 全不需要见面的项目组,快结束的时候总是会想聚在一次见个面吃个饭什么的。
其次
其次,不要说公司了,在家庭里,甚至只有我一个人,如果经济允许,那我也要搞服务器的啊!比如家庭服务器啊。 强调便携性的笔记本,性能永远会是一个坎,唯一的解决办法就是做图像投射,也就是用类似teamviewer的软件,操作另外一个系统。当网络相应速度(UDP)降低到1ms以下且带宽大于2GB/s时,这就会发生,笔记本主要变成了输入输出设备了!这个时候,另外那个系统不就是本地服务器嘛?!(现在可以考虑做便携式输入输出设备兼超高速无线网络连接的专利了) 好,不说这么远。家庭服务器没事挂了bt下载,到家了用upnp转发一下视频到电视机(投影仪)上,不也是绝佳的体验吗?
正经说
那本地开发服务器相对远程开发服务器有什么优势呢? 对,上面说了,只有网络问题。
- 公网请求,速度最少100ms左右吧。你ping一下百度。在ping一下我们的本地服务器。看看差别。
- 带宽:下行一般还好,如果对方不设限,快的时候可以到2.5MB/s,但是上传,别提了100KB/s已经感谢天感谢地,还得感谢同事没有嫌你卡着网。
如果千兆带宽不设限,那不用往下看了,我们就用远程吧。
本地开发服务器可用作这几个功能:
- 加速服务: 如果有经常性,集中,大量的下载需求,而且网并不快的话,可以考虑加速服务,比如我们的npm加速。
- 文件仓储: 如果文件仓储很大,而且网特别是上行并不快的话,可以考虑做本地文件仓储。不过我们的npm仓储并不作为例子,因为真的要实现的话,我会上aliyun。
- 开发测试:如果网并不快的话,可以开发的时候,多考虑使用本地开发服务器。
- 文件共享:似乎用不上,我研究下开了方便一下大家吧。
性能
我们暂时不需要强的服务器,对cpu、mem、硬盘的要求都几近无。 不过我已经看上某宝上某二手服务器主板DIY之后的产品了。 做个广告。(不是我的店,只是好想买) 你们如果要弄游戏主机的话,可以考虑这样搞,除了耗电高,发热大,开机慢,没有任何不好的。