• 8
投身互联网24年的技术老将教你:基础设施上最易犯的三类错误该如何避免
统计 阅读时间大约8分钟(3051字)

2016-10-15 投身互联网24年的技术老将教你:基础设施上最易犯的三类错误该如何避免

不用担心,问题都是可以及早解决和预防的。

【猎云网(微信号:ilieyun)】10月15日报道 (编译:堆堆)

当1992年Avi Freedman准备从Temple University毕业时,费城几乎没有地方可以购买互联网服务。即便你想付钱来换取一个上网拨号账户,你也没处送钱。而Freedman却早就开始运营一个Unix机器供他认识的人登录来使用。之后,他决定把他对于互联网现状的不满转化为去创建一家公司,供区域内的所有人来拨号上网。

他是这么想的:“这也没什么难的吧。我只需要买一个可以全天使用的商用联网链接,然后增添一些调制解调器就可以了。”不久之后,Freedman创建了费城第一家互联网服务提供商。早期的经验让他受益匪浅。提供商业性互联网服务的Netaxs以及其他类似的服务供应商衍生出了一群经营大企业、提供网页和云服务供应商基础设施的人。这些基础设施遍布全球。

Freedman自此之后开始进军互联网世界。他负责全球网络骨干供应商AboveNet的工程业务(如今AboveNet已被Zayo收购)。他还在Akamai待了十年时间,负责运营互联网团队并且围绕基础设施开发服务,之后他担任公司的首席技术官一职,负责技术工作以及云服务公司ServerCentral。两年半后,他创建了Kentik,为企业提供完全可视化的互联网流量、表现以及安全情况。Freedman已经看到100多家初创企业升级了自己的基础设施,而他则可以为技术基础设施提供最佳建议。

在本篇文章中,Freedman将会跟我们分享初创企业在设置系统时常常会犯的三大错误。

• 它们进入了云监狱。

• 它们卷入了流行工具。

• 它们在设计时没有考虑可监测性。

如果你发现了自己公司存在上述问题的症状,不用担心。在你创建公司的过程中,你是可以避免这些陷阱的。

欢迎来到云监狱 

“这是一个反复发生的故事:一家初创企业贷款了25万美元来设置云端的基础设置。这很不错。刚开始时,每个月的花费仅为2万美元。但随着公司的发展,云端基础设施的花费变成了每月5万美元,之后增加到了每月10万美元。突然之间,贷款额度已经用完了。而云端基础设施的成本也在继续增加。这时候董事会突然问道:‘等下,发生了什么?员工才应该是你最大的资金支出来源,你却将所有资金都投入了云端!’于是乎这家初创企业开始‘缩衣节食’——即优化数据库服务的使用、购买及时型实例或是预留实例、调整实例类型、追踪并且删除无用的对象存储或块存储。最终,公司将云端成本减少到了每月8万美元。一段时间之后,他们尽力压缩的成本仍在增加,这就使得之后进行优化的资金大大减少。”Freedman这样说道。

如果他们还想按照董事会的期待,继续快速发展公司,那么他们就要立即越过之前的高水位线,这一点实行起来并不容易。初创企业将很难支付得起继续使用基础设施的费用——尤其是在2016年,大家都愈加关注盈余以及单位经济效益。

每个人都希望自己能够回到过去,告诉当时的自己去利用云服务来发展公司,但不受限于任何一家供应商。

云监狱指的是:你会发现自己在基础设施上花费了过多的资金并且完全受限于你的云服务供应商。”Freedman这样说道,“但此事发生时,换一个云服务供应商却没那么简单。你使用的是它们特定的服务和环境。你已经和它们提供的服务紧紧相连了,迁至另一个云端非常困难。”

就拿行业领导者亚马逊来举例吧,亚马逊拥有一系列吸引人的属性。它可以轻易识别用户身份。身份验证、消息列队、邮件、通知以及无缝数据库,这些都是可以为你节省很多时间的轻量级服务,但前提是你得使用AWS(亚马逊公司旗下云计算服务平台)。亚马逊的魅力在于尽管存储以及宽带成本日益增加,但它们仍可以保证用户不会迁至另一个云平台。亚马逊的客户根本无法想象自己缺乏AWS提供的服务之后会是什么后果......

“醒醒!董事会正在打电话询问你为什么毛利润永远无法超过40%?为什么你在基础设施上花的资金比在开发者身上要多?”他说,“你解释说事情本应当是按照对数级增长的。公司在发展的过程中,成本本应该会减少——但是事实情况不是如此。尤其是在如今的风投市场上,这类的借口是无用的。”

那么你应该怎么做呢?

“你亲自去调查基础设施,然后发现云服务并非一直都是那么便宜或是高性能。” Freedman这样说道,“这就像是你有一个灾难恢复计划或是安全应急方案一样——当你出于成本或是性能原因无法在云端运营一些内容时,你应该清楚知道自己要做什么。至少有一部分基础设施你得知道自己该如何使用,你还需要雇佣一些对此有经验的早期团队成员。”

Freedman表示你可以租用其他人运营的现有设施,然后购买或租用服务器或是路由器。这种做法要更为高效。

你越早能想到这一点越好。如果你可以摆脱云监狱,那么你就应该开始采用多个云平台模式并且给出最初的牵引力、设置小型的基础设置,将其与你的云服务供应商连接在一起。

员工也能起到很大作用。只需要早期雇佣的3到5个员工,他们就可以运营云端以及专用的基础设施。和刚开始相比,该团队通常可以运营十倍大的系统。

最后一条关于云平台迁移的建议:“对于随时在线或是有很大存储量要求的工作任务来说,你可以考虑裸机云平台以及像SoftLayer、LeaseWeb、OVH、Packet这样的专用服务器供应商。”Freeman说。

轻信流行工具

“人们都爱尝试新工具。当他们听闻有一家牛逼的网页公司开发出了一个技术型基础设施工具来解决某问题时,他们就想去尝试一下,因为这听上去又方便又节省时间。”Freedman说,“我们之前在Kentik也轻信过这些流行工具。我们当时发现了一个可以解决特定分布式系统问题的工具,然后觉得‘这看上去不错——我们一直想拥有这样一种工具’。幸运的是,我们只不过是在内部投入了大量时间,并未引起用户的愤怒。”其他的公司就没有这么幸运了。

即便是世界上最聪明的人也会对一遍又一遍使用同样的工具感到无聊。他们总是想要尝试可以解决问题的新工具。

Freedman关于此事的建议是:当涉及到基础设施组件时,尽可能保证组件的简单。也要持有一定的怀疑态度。当涉及到基础设施中的核心组件——存储量、负载均衡以及服务发现时——你必须要确保使用的组件不会带来任何问题。也许,你剩余的应用或是组件已经给你带来很多麻烦了。

那么你应该怎么做呢?

作为总裁,如果你发现团队被流行工具吸引住了,你需要在短时间内暂停工作然后询问他们:“究竟我们试图要解决的问题有多严重?”你可以用以下这些问题来判断你对此问题的感觉:

• 你愿意为此做出多大妥协?

• 你愿意为此冒多大风险?你可以为此牺牲资金、时间或是消费者吗?

• 你是否必须要定期为这项工具/组件的开发投入资金?

• 你可以负担得起雇佣一个或是多个兼职员工来将此工具/组件开发成不同级别可应用的工具吗?

• 这项组件技术有多成熟?它在你运营的应用类型中是否起到积极作用?

• 你有什么证据来证明这项工具在不同情况下是稳定的?

• 如果运行顺利,那么这项工具可以节省我们多少时间和精力?

• 这项工具/组件(由于其他工具/组件的使用效果不好)是公司最终也需要自己进行开发的吗?

• 你可以找到人证明它不适用的模式吗?尤其是当你找不到这样的人时,你能投入足够的时间去自己找出答案吗?你还需要去寻找它的弱点以及恢复途径。

设计时要考虑可监测性

“测试优先开发”好像变成了业界奉行的准则之一。当然,其间有很多原因。如果你无法理解某一行代码,那就进行测试好了。但是Freedman却持有不同的观点。

“首先要关注的不仅仅只是测试,你还要从批判性的角度去思考监测的能力。”他这样说道,“如果你不知道组件是如何同其他基础设施配合运行的或是说你不知道该如何将组件放置在你需要的仪器里面,那么放置这个组件就变成了一个很危险的事情。”

测试往往指的是单元测试,这类测试重视的是组件本身。但每当组件运行出现问题时,往往是组件参与的动态系统出现了出人意料的结果——这并非是事物本身的问题。

你需要去思考所有可能的交互作用以及在开发之前就去思考好最终的仪器会是什么样子。尤其是在分布式系统中,问题显示的位置和产生连锁反应的根源往往相距甚远。

总结

Freedman强调的三种错误绝非是他职业生涯中遇到的唯一几个陷阱。这只不过是最常发生且最耗资金的陷阱。幸运的是,他的建议可以帮助你避免与基础设施相关的问题。

• 早点思考这些问题。早到你自己都认为思考这个问题太早了。

• 与此同时,谷歌所做的一切不一定就适合你。

• 建立一个三权分立的制度。争取获得专家的帮助。

• 预测你尽最大努力会让公司走到哪里,在发展过程中不断重申这一点。

• 无损用户为先。不惜一切代价保护好用户体验。尊重他们的信任。

有了这些建议,你就可以在很大程度上控制自己公司的命运。当你能更好地掌控这些问题时,你的注意力就可以集中放在那些你要真正解决的问题上。

1、猎云网原创文章未经授权转载必究,如需转载请联系官方微信号进行授权。
2、转载时须在文章头部明确注明出处、保留官方微信、作者和原文超链接。如转自猎云网(微信号:lieyunjingxuan
)字样。
3、猎云网报道中所涉及的融资金额均由创业公司提供,仅供参考,猎云网不对真实性背书。
4、联系猎云,请加微信号:jinjilei
相关阅读
推荐阅读
{{item.author_display_name}}
{{item.author_display_name}}
{{item.author_user_occu}}
{{item.author_user_sign}}
×