初创公司如何规划IT基础构架
一些同学会认为,IT对很多非技术出身的领导,在非技术导向的公司来说,可能没有那么重要,看到很多的创业公司都是在成熟平台上快速部署业务。但我想说,它的重要性主要体现在保证你成功的跨级成长,所谓跨级就类似一些玄学小说中经常会提到一个词叫“渡劫”,例如从种子用户阶段进入到了正式市场推广阶段,或者当用户数上升到另外一个台阶的时候,或者当功能出现一些很大扩展的时候,这个时候你对IT的选择,或者对架构的选择,就变得非常重要了。
我猜各位在自己项目里面,或者公司里应该遇到了更多的问题, 这是我一个初步的总结,在我们接触到的创业公司中,对技术平台的典型的需求,或者说对IT基础架构的典型的需求。
虽然我们常说“不要重复发明轮子”,但在实际执行里面,我们看到很多企业在重复发明轮子。我举个例子,一个做共享单车的客户,他们基于IOT常用的MQTT协议开发了自己的车锁管理系统,并且上线。后来发现了一个问题,很多应该在协议层实现的功能,比如说安全方面,在后来的开发里面不得不在应用层来做,这样其实后期开发维护成本非常高。不如在开始就评估和选择一个适合的IOT平台。
另外一个例子是一个做游戏方面的创业公司,他们的技术能力非常强,他们自己优化了Linux内核,希望通过降低成本,但是后来在一些游戏上线时发现,兼容性受到影响,不得不放弃之前做的东西。
所以我建议是在这些阶段尽量用一些被广泛采用的框架,以及是说通用的方法来进行开发,这样能够降低将来发生问题的概率,虽然也许不是短期优解。
除了国内用户,我们也接触不少海外的创业公司,我们观察到国外的创业公司在Devops这个方面做的更好,他们做了各种尝试来降低运维工作量,并且将全部工作都变成软件化和自动化的。
在这个领域里面,各个云平台都做了大量的工作,比如做一个三层架构的系统,共有几个服务器,每个服务器的配置以及每台服务器上应该部署哪些软件,他们之间的依赖关系,这些东西全部都可以通过模板进行描述和编程的。
这样做大的好处是稳定了自己的架构,比如说当其中某一台服务器出现故障的时候,你可以通过软件自动恢复业务,甚至说云平台或者底层架构发生故障的时候,可以通过这套描述的脚本迅速的再恢复起来一套。在云上面,服务器本身不是资产,数据才是,服务器只意味着一组配置,这组配置坏掉了可以迅速的重启一个,利用以前的数据重新把业务恢复起来。
这个也是很多人提过的,比如之前很多公司做图象识别都是基于模式识别技术,在深度神经网络从科学领域转向了工程领域之后,现在出现了大量的创业公司,他们利用比较成熟的框架和数据,以比较低的成本迅速的实现了很多大公司做了多年的水平。充分关注新的工程技术和平台,把主要精力花在对用户有价值的点上。
这是近在美国挺火的一个电视剧《硅谷》,那个电视剧里面他们的团队在这里面每个人都有明确的职责,大家就关注在有价值和有用的事情上。
我想谈的幸福家庭第二个特点是服务的高可用。
用一张有一点技术化的图来说明一下选择可靠的平台和架构是什么意思。比如在亚马逊,把一个区域,比如说中国北京区域分多个小的分区,这两个小分区之间的距离大于30公里,意味着你可以很容易“零成本”的实现同城容灾的架构。比如,万一任何一个小分区供电有故障了,或者发生大的火灾了,另外一边的机房是不会受到任何影响的,业务也可以平稳的运行。
一般大家都会说我已经做了容灾,但是更重要的是需要了解,能容什么级别的灾难?如果只是在同一个机房里面,业务分布在多台机器上,只能说可以容忍一台服务器硬件故障的级别。但是如果你把它分散在两个不同的分区里面,很显然可以承受更大范围、更别的灾难。
高可用架构另外一个好处是,可以减少大家的意外加班,毕竟出故障是不分假期和非假期的。
一些朋友可能会认为高可用架构带来了另外一个问题,会不会很难管理?成本会不会提高?因为服务器数量都翻倍了。但实际上,它成本不会增加,原因是只是分散了服务器的位置。关于管理难度会不会增加,刚才我们其实点有在说,我们非常建议整个架构软件化,自动化,分散在两个分区并不会导致难度显著的增加。
幸福家庭的第三个特点是关注安全。
这个也是我发现很多初创公司并不特别在意的一点,大家虽然都在说数据是很重要的资产,但是很少有人使用有效的方法来保护自己数据的安全。
权限管理和审计,审计是非常重要的一个事情,至少出事之后我要知道是怎么出事的,亡羊补牢。这一块其实并没有太复杂的操作以及很高的成本,我建议大家把它一开始的时候就考虑进去。
后一点就是大家都非常关注的成本控制。
云服务并不是完全标准化的产品,各个平台计费模型和计费都有各自的特点,怎么充分利用这个模型和自己的业务特点相匹配是非常有意思的一件事情。
成本并不是简单的对比,还有一个是充分利用平台或者技术架构方面的特性。比如我们经常会听到说弹性,指的是怎么能够让你的成本和用户增长相匹配,用户多的时候多付出一些成本我相信大家是愿意的。这里面一方面是底层云平台的能力,一方面也是业务架构方面的能力,如果你前端的业务是无状态的,当用户量少的时候可以自动的把部分服务器停掉,当业务增加的时候可以自动的开机。
相关文章