从个人工作实践聊聊云计算

缘起

最近的工作,接触了很多云计算相关的皮毛知识,虽然是皮毛,但也毕竟让我对此多了几分认识。于是就再整理整理思路,写下来吧。

发展历史

曾经有段时间,哪怕是一点都不了解互联网的人,也能够经常听到“云计算”,“大数据”这样的词汇,他们的热门程度,类似于较早之前的“AI”,”VR”,“人工智能”。不过作为一个搞计算机的,“AI”和“VR”其实我一直也从没有能够从技术上应用过他们,以至于一直觉得十分遥远。但”云计算“却随着了解地越来越多,觉得不再那么高山仰止了。

亚马逊应该是最早布局和应用云计算的。他从02年正式发布了AWS,之后这个业务也给他带来了很高的回报,股价一路飙升。后来微软和谷歌也紧随其后,开始布局云计算。国内云计算的发展稍晚了一下,但是也是很牛的。前一段时间,有篇《阿里云的这群疯子》的文章,讲了阿里云从初创到繁荣的历史转变,一时间也刷爆了朋友圈。阿里云诞生自09年,腾讯云诞生自10年,两个巨头也是你争我赶,虽然在我们外人看来已经很牛了吧,但毕竟亚马逊云计算发展的比较早,还是亚马逊的AWS更加给力一点。

发展历史终究只是浮云,对于开发者来说重要的是能够实际应用这些云计算技术,并为自己创造价值。

saas, paas, laas

关于这三者其实网上已经有很多人在科普了,比如我文章下面参考链接里的阮一峰大大。但是我还是想将我的理解表达出来,给自己一个回顾。

saas

按照我的理解,这三种服务面向的群体实际上并不是重合的。

什么是基础设施

我先说说我自己觉得最好理解的,laas,Infrastructure-as-a-service, 也就是基础设施即是服务。那么问题来了,什么是基础设施呢,我们试想假如你已经有了一个好点子,要建立一个面向全国范围内的电商网站,这个网站一旦投入使用,立刻就会成为行业前十,但是你没有太多的投资。这个时候你需要自己在万网或者狗爹(goaddy)买一个域名,如果是面向国内用户的站点,你要对你的域名进行备案,这些过程都还算简单。

接下来你需要买一台服务器,如果你自己有一些特别的需求,你还可以定制你的服务器。有了服务器,有了IP,你需要你所购买的域名能够指向你的IP,你又需要DNS服务

你要给服务器装上系统,装上合适的数据库,之后你的程序能够在你的服务器上面跑起来了。但是即便如此,可能还是会有很多问题,比如为了容灾的需要,你可能有不止一台服务器,比如3台,但是你只能把这3台服务器放在一起,于是面临的第一个问题,那就是你可能只能保证你服务器所在地的访问速度,而其他区域则保证不了访问速度。但是你只是个小的创业者,根本没有能力在全国范围内,搭建多个服务器来满足全国高效的需要。于是你陷入了苦恼,感慨原来创业并不只是”就缺一个程序员了”。

然后你姑且容忍了没有CDN的问题,你考虑到你的站点虽然面向全国,但是一半的用户来自北京,于是你把那几台服务器放到了北京的联通机房。除此之外,你还需要大量时间来做运维,来支持你的服务器的正常运转。我曾经见过公司从服务器选型到网站服务安全稳定运行的整个过程,的确是需要大量的时间成本以及很高的知识储备的。

解决方案

有了需求,接下来就要有人来做了。就拿亚马逊来说,他很早就做成了全美最大的电子商务平台,而他的站点规模,决定了他一定要使用上大规模的服务器,以及应用上CDN等技术。这个时候,亚马逊说,我想把我的空余的服务器租出去,注意,我不是像dell公司那样把服务器买给你再做做售后服务工作那么简单,我是把服务器租给你,如果你愿意的话,我还可以给你一整套的解决方案。也就是说,你服务器上安装的数据库也可以从我这里来租,数据库的配置我都可以预先给你配置好,保证是一个最佳实践,你无须再为此付出大量时间精力。

我也可以把我自己成熟的CDN技术分享给你,让你的网站也能够无论在哪里,都能够有一个很快速的访问速度。如果你的网站上有大量的多媒体资源(图片,视频等等),你也可以把这些多媒体资源存放在我这里。我保证,你的多媒体资源的访问速度,与我们亚马逊自己的多媒体资源访问速度相当。凡此种种,还有很多。由此,其实我们不难看出来,当今互联网以及计算机发展的一大潮流,就是从原来的购买转变为后来的租用,类似的情况,单就美国来说,还有租用影片的netflix, 以及微软的office虽然也在卖,但也有更多的用户选择了office365。

租用的好处与坏处

让我们暂时岔开一下话题,聊一聊究竟这种租用的方式能够带来哪些好处呢?为了不岔开得太远,我们还是以云计算服务为例,我们来算一笔帐,假设一家小公司初创,为了自己的网站能够安全稳定的上线,他需要服务器以及上面提到的一套解决方案,他为此要付出很大的成本,而又由于是初创企业,自己无法准确估计自己的需求,可能最后买到了合适的服务器,以及应用上了一套解决方案,一旦业务突飞猛进,他又要对此进行升级,相应地,又要花费大量的时间人力成本。而租用的方式,则是能够在一定规模内,实现付出最小,利益最大。当然,我也说到了是一定规模内,我们看到公司一旦达到了一定规模,租用的成本要远远大于直接买的方式,因此我们也看到像dropbox就离放弃了AWS转而自建基础设施和网路。

### 都有哪些基础设施

为了方便,我们这次把视线瞄准国内,看看阿里云是怎么做的。下图是阿里云的产品一览

阿里云产品一览

我们也可以看到,就我们刚才所说的例子来看,用到了弹性计算(云服务器)、存储服务(oss等)、CDN技术以及数据库这些基础设施。阿里云将这些服务拆分成一个个的产品进行出售,我们可以根据自己的需要进行量身定制。

感兴趣的同学,可以通过参考链接,进入阿里云的观望去瞅一瞅。

laas 的好处

所以回过头来再来看云计算中的laas,能够看到他是有很大的优势的。主要表现在:

  • 租用的方式能够让付出最少,收益最大。前面已经提到过
  • 快速完成基础设施的应用,专注业务核心
  • 运维成本降到最低

saas

软件即服务

这个其实按照我的理解,并没有laas复杂。想对于laas而言,我认为主要区别在于:

对于购买laas的使用者,他对于在基础设施之上所搭建起来的应用程序有非常高度的掌控权,毕竟laas只是提供了基础设施的服务,真正的应用程序,还是需要自己来开发。但是saas则并非如此,他聚焦在了更高的层次上,直接为你提供了应用程序,因此你对应用程序本身的掌控力非常差,如果让我举一个例子的话,我会说当今很流行的微商城服务,比如微盟,你通过购买他的这个微商城服务,然后再在自己的微信公众号后台进行一些简单的配置,可以快速地建立起一个微商城来,如果你有需要,当然也可以快速完成微信小程序的创建。相比laas而言, 这种方式更加高效了。只是,会更加受制于人。他有点像是曾经经常被讨论的自有商城和天猫店铺的区别,在这里就不再多做阐述了。

paas

paas,也就是“平台即服务”,我接触的比较少,也就简单说一下我的理解。我自己用过的是,2013年左右的GAE,当时通过一些简单的配置,完成了一个应用,也就是goagent的开发(相信经历过那个年代科学上网的朋友,对此定会不陌生)。为了写这篇文,我也找到了一篇2014年其他人的博文,介绍goagent的原理,感兴趣的朋友,可以通过参考链接过去看看。我用goagent 的时候,还对云计算这一块毫无所知,完全是根据网上的傻瓜教程来搭建服务的。现在会过头来看,就像是阮一峰博文中所述的那样,paas是正好介于laas与saas之间的一种服务

阮一峰博文图片

还就goagent所使用的GAE为例,他并不只是给你基础设施,他也给了你一个应用程序所必须的环境(在这里是python环境),他也不同于saas,他没有给你一个完整的软件服务,让你直接就能够使用,他还是要让你自己来写程序,来实现某些功能的。其实写到这里,我又想起了当年玩贴吧的时候,也有朋友基于百度的BAE(与GAE类似),实现了百度贴吧的自动签订功能,当时依然觉得有趣,也仍不知所言。只是照猫画虎,但这照猫画虎,却让我对计算机有了更深的兴趣。

综述

其实说起来,我最早用的云服务是个人服务,百度云。后来,又用了很多其他的个人云服务,我早在4年多以前,我就说过要构建一个个人云端信息库。我就表态过,自己对于“云”这件事很乐观。我想既然2c是这样的,2b也应该不无例外。包括前面我的许多分析,也都表明,我自己是支持云计算的,即便从社会分工的角度来说,让专业的人做专业的事,这件事,从来也没有错。

标题说的个人工作实践指所见到的公司从服务器选型到网站服务安全稳定运行的整个过程,准备上云计算的过程,使用微盟微商城的体验,使用goagent的体验等等。

参考链接