谈云端运算的一些谬误思维 (转贴)
http://ruddyblog.wordpress.com/2013/07/26/
遇到客户(IT部门)辛苦的在比较该选择那个厂商所提供的云端解决方案最合用。我能作
的就是提供了一些云端供应商的比较资料( Cloud Server Performance: A Comparative
Analysis of 5 Large Cloud IaaS Providers | Cloud Spectator ),以及自己的一些个
感想:
请用不同的思维方式看云端
这或许要怪云端的广告太夸张(这年头还真找不到不夸张的广告),过度强调的功能容易
造成即便是专业的工程人员也会产生的一些个误解。其实大部份广告上所喧染的功能都是
需要经过程式设计的,并不是如广告用词那般的让人们容易误以为跑在云端上的程式就能
够完全的自动化了。例如:我们以云端大家耳熟能详的四大优点来看:
1. 用不完的CPU power
2. 无限的内存空间
3. 无需管理人员的维护作业
4. 没有地区限制,无时无刻都存在的云端服务
真是这样的吗?这些个条例说明当然是千真万确的,只是背后要再加上程式设计人员适当
的努力及实践,以及在正确的架构下运行,这些迷人的功能自然都能成真。
一些认知上的谬误
话说从Microsoft 的 windows azure诞生至今也已经有三个年头了,但国内不论是IT部门
或是一般工程师,却对云端的应用仍存在许多的误解,我们就试着来说一下:
对专案属性的正确理解才是王道:好的程式设计师跟不好的程式设计师的差异就在于正确
的理解能力,身为programmer要时时修正自己的观念才能更上一层楼。话说回来,要不写
出糟糕的程式,就必须要有正确的观念。云端撰写程式跟既有的程式撰写方式是有许多不
同之处的,或许你已经习惯将本地执行良好的程式直接安装在VM里头,只待上传完成就搞
定了,如果你这么想,但那就很难去发挥云端的效益了!请看以下的误解…
误解一、云端的硬件是不会失败的?
错!它会失败的。即使是在云端上一货柜一货柜的机房也有故障的机会,也需要定期或不
定期的维修,停下来,或是为了更新软件或是修补bug不得不停。所以在架构的设计上,
千万不要把云端想成是不会故障的机器,相反地;它提供了你庞大且简易的方式来处理这
些故障的情境(身为程式设计师的你必须把它考虑进去),让你对客户所提供的服务不会
因此而中断,平白的损失了信誉。
误解二、 云端有用不完的内存,效能不足时增加内存就成了!
错!vm 最大可以到127G, 你可以选最小的: Extra Small(XS)配一颗1.0GHz 的
CPU,RAM 为768MB,本地端储存体为20GB,这是最省的。那最大的呢?Extra Large(XL)
有8 颗 1.6GHz的CPU,RAM 14GB 及高达2040GB的储存体大小。明显的它不是无限的,所以
你是必须精打细算细细思量一个符合客户工作形态的架构,来确实发挥内存的容量。
弹性的运用Scale out: 我们常常会在数据库运算力不足时,就采用加RAM的方式来解决这
个问题(这招真是好用,完全无需害怕会出新状况),但scale up不是万灵丹,其时它们
还是有大小限制的,这时候该考虑的就不是scale up,而是scale out.
误解三、几乎所有的云端供应商都保证提供大于99.9%以上的使用率,所以我们也能够提
供给客户这样的担保。
重视High available 能够持续提供客户服务是绝对重要的,但相对于客户的业务需求,
它是否是绝对必要的呢?!它跟你即将付出的高成本是否是成正比吗?
要探讨这个问题,首先你必须先弄清楚你的云端服务确实有必要拥有99.9%的需求吗?因
为,除非你是单一的系统,完全没有协作的上、下层,否则在几个一同协作的复合环境下
,你很容易因为其它系统的效能而失去达成99.9%的availability(例如: 三个99.9%的
系统成串联方式的架构时,试想你还会有99.9%的产值吗? 串联的效能实质上将只有99.7%
的availability)。
Bicycle
误解四、云端具有scaling的能力,但这不代表你把程式port到云端,它就具有scaling的
能力了,你必须透过架构设计才成,程式不会因为在云端的机器上执行就自动具有这种能
力的。
误解五、Move everything to cloud, 对吗?!
又回到公有云和私有云孰对孰非的话题,这当然是不切实际且又耗时的行为。目前的趋势
则是走向 hybrid cloud 的解决方案才是王道,可以在不浪费既有资源的情形下又能享受
到云端的便利性。
正确的架构才能发挥云端的功能
当我们去存去一个网站而遇到lag的情形时,我们经常会说:“他们一定没有采用云端的
solution,才会发生这种现象。”但这句话合理吗?试问,即便把程式搬到了云端,lag
的现象就会自动消失吗?结论是当然不会,而正确的说法应该是它的架构设计不足以支撑
它被存取的数量,也就是scaling 设计没作好(话说回来,厂商很少会为了瞬间的流量愿
意花钱花心思去提升web site 及程式的scaling能力的,所以程式设计之初即已经注定要
暴表了,所以好的程式设计便成了关键之钥)。此刻,国内云端还在缓慢的成长阶段,程
式师要先有正确的云端思维才能设计出符合预期的架构。这一点比起在考虑选择Windows
Azure 或Amazon 或其它云端供应商的考量,要重要太多了!
怎样的架构才是正确的云端架构呢?
别担心,这是有迹可循的,我们下回再谈~