2008年,刚开始接触互联网,那时候用的手机还是Windows Mobile,对于iPhone来说根本买不起,当然这一年也是移动互联网的热点之年。第一款真正的安卓手机也随之发布,诺基亚也毫不示弱,Symbian开源了。那时候云计算在国内也不是很流行,我们都在用虚拟主机。这一年MySQL也被收购了,Windows Server 2008也横空出世了,十年前的今天,真的是相当精彩!
那么回顾之前,我们的IDC是一个什么情况呢?那时候是成千上万的物理服务器,每个服务器上需要安装操作系统,比如Linux或Windows Server,然后在其之上部署应用。直到有了虚拟化的出现,可以将一系列操作过程镜像化的批量去做,同时虚拟化可以很好的利用硬件,避免其中的性能浪费。目前整个云计算的时代已经普及,云和虚拟化最大的区别就是云计算赋予了API的能力。
虚拟化是一种技术,允许我们从单个物理硬件系统创建多个虚拟系统,我们管它叫VM。 这些VM依赖于VM管理程序将计算机资源与硬件分离。08年正是虚拟化盛行的一年,KVM、Hyper-V、Xen等虚拟化技术越来越流行。当时最早还是在Parallels(一家虚拟化软件公司)实习,做技术支持,我们给客户解决在使用Parallels虚拟化产品中遇到的各种问题。
随着虚拟化的流行,后面又刮来了一阵大风,这就是云计算的出现,云给我最大的感触就是,它有了API,可以让我们做更多虚拟化做不到的事情。刚开始最早接触云计算还是在公司中做OpenStack的PoC(概念验证),直到支撑着整个生产环境的运行。那时候接触的最早的版本是Havana,当时走了很多弯路,每一次部署都会失败,都会有问题。那时候的OpenStack Bug非常多,没有现在的稳定。那么当时我们是怎么一步一步达到生产级别的?这里面付出了太多的心血。我们为了推向生产的时候保持和测试环境一样的部署架构,包括每个package版本以及配置文件,几乎调研了当时所有可以自动化部署OpenStack的开源软件,比如:Juju solutions for OpenStack、Autopilot、puppetlabs-openstack、openstack-ansible、Kolla、RDO(Packstack)、TripleO等等。但是这里面会有一个通病,就是通过这些软件部署出来的环境并不是我们想要的。而且当时PuppetLabs的Module还不支持高可用部署,我们咨询了官方,官方给出的答复是在后面版本会支持这个能力。最后,我们决定重复造*,一个真正支持高可用部署的OpenStack Provisioning工具。后来,在GitHub上创建了个项目,开始搞起来,这个项目叫Playback,这个项目的作用正如同它的名字(回放)。Playback可以真正按照用户需求,自定义部署架构,且支持高可用的一个OpenStack的Provisioning工具(提供命令行和API)。最后我们通过Playback将整个OpenStack部署到了生产环境,这是一个很大快人心的事情呀!但后面也会存在很多失落感,这就是搞开源的寂寞,几乎没有人用我们的产品,除了我们自己使用。没有任何人发issue,没有任何人fork,没有任何人鸟你。后来我们打算把这个项目进入到OpenStack的Big tent里,Big tent是OpenStack所有子项目的一个大集合。这个很难进,原因是什么?我们的速度跟不上,因为官方已经有了Playback具备的所有能力。
虽然这个开源项目可以说是搞黄了,但这些经历,这些经验是非常宝贵的。首先,我们一定要明确是否需要重复造*?怎么造?造出来怎么运营?这都是技术之外的事情。其次,速度不一定是胜利的必要条件,但速度是最基本的条件。技术发展很快,技术颠覆也很快,我们应该如何把握这之间的时速?最后,无论结果如何,一定要坚持,当你决定要下手干的时候。
但是今天,越来越多的中小企业几乎不在IDC中构建自己的私有云了,更多的企业转而投入了公有云的怀抱中,这是为什么?看我们之前搞OpenStack来说,我们付出了很多人力成本,而中小企业不愿意去投入这个人力成本。这是原因之一。还有就是之前大家都觉得公有云不安全,所有数据都放在公有云上,这样安全吗?但是大家目前都在用公有云环境,从而也慢慢消除了这种概念。我一些朋友所在的公司,几乎也都在用阿里云,这是一种趋势。