Kubernetes的思考

Kubernetes的高速发展是围绕这个生态的企业所推动的,这也和CNCF的企业运作模式有关。企业会将自己的需求推动进入CNCF孵化,并且尽快产品化。所以这个生态鱼龙混杂,存在过度复杂化的趋势。

对于个人和中小企业,如果规模无法做到数百物理服务器,上万的应用容器,那么部署Kubernetes是非常不经济和低效的: 考虑到恐怖的复杂架构,和云厂商深度绑定,如果业务无法带动这样的技术规模,你的IT投入可能远超你部署少量VM就能完成的技术成本。

我个人感觉这里有一个平衡的考量: 公司规模(集群规模),是否有足够的技术(人)储备都会对使用云还是自建的成本考量有巨大的差异

简单来说:

  • 如果公司是大型互联网公司,本身具备全栈(互联网)技术人才(团队),能够完整构建基础设施,也就是本书 Cloud Atlas 追求的终极目标。那么你可以考虑自建集群:

    • 服务器硬件由于标准化规模化,所以实际采购成本在基础设施中比例有限,甚至可以采用二手服务器,通过高可用集群来弥补通用计算机(甚至二手)的稳定性

    • 不需要追求全面的云计算技术: 所有的云计算只是为了追求极致的规模化来降低单机成本,对于中小规模企业这种性能和高可用追求的成本远超过购买基础服务器设备以及构建适度规模的服务集群

  • 如果公司是商业公司,对IT来说是辅助商业业务实现,并且规模没有做到世界级业务(适用于大多数大中小传统企业),那么上云可能是不得不付出的成本:

    • 要达到云计算的稳定性和可靠性,远不是购买硬件设备和基本商业软件就能够实现的,无论是高可用、高性能的存储、计算、网络,还是配套的容灾架构,其难度和成本不是普通企业能够承受的

    • 非巨型互联网公司难以招揽合适的足够人才,来支持起比肩云计算的高可用、高性能计算机集群来支持商业服务

      • 这样的全栈基础架构人才在普通公司无用武之地,天然需要被吸引到大型互联网公司或者类似 37signals 这样站在IT技术前沿的顶尖组织

      • 普通商业公司自建私有云只能自用,无法像公有云那样由海量用户来分摊成本

  • 如果是创业的互联网公司(从几个人快速发展到成百上千人的规模):

    • 初期需要聚集资源到商业上,先让公司活下去,根本无力去投资云计算

    • 初创公司的业务波动剧烈,所以需要的IT设施也如同过山车一样波动

    • 根本不知道自己需要多大规模的基础设置,那不如直接购买云计算VM,从少量开始,根据业务情况不断调整

  • 当创业公司的业务和规模进入稳定期,并且储备了足够的基础设施(全栈)技术人才(类似下文的 37signals ),那么可以考虑 下云 :

    • 公司业务稳定和可预期可规划,也就能稳定规划出所需的服务器和集群规模,以及对应的多地容灾系统

    • 达到稳定的中型体量,本身是精通IT基础设施的互联网公司,才有可能自己定制 “云计算” 相当的 自建IT基础设施

    • 业务稳定性和技术能力两者缺一不可

      • 太过剧烈波动的业务 不能 采用自建基础设施

      • 没有过硬的技术能力 不适合 自建基础设施(你遇到的故障和问题可以轻易抵消掉你下云省下的开支)

备注

总之, 37signals 下云为我们开创了一个 不盲从 的技术先例,这也是这家传奇企业特殊的能力和业务相结合的恰当选择。

大多数传统企业以及没有达到一定高度(业务和技术)的IT公司,依然是云计算天然和必然的客户。

37signals下云案例

37Signals联合创始人&CTO DHH(David Heinemeier Hansson): 对于像他们这样具有稳定增长的中型企业来说,租用计算机在大多数情况下是一个不划算的选择。运营商所承诺的通过降低复杂性,减少运营支出之类的费用节省也从未实现。

  • 37Signals 已经经营了 20 多年,这是一家中型企业,拥有约 80 多名员工和 10 人左右的运营团队,以及超过十万的客户

  • 很多情况下,他们都会有一个可预测的基础负载,并不会有剧烈的波动

  • 公司内部在运行服务器方面具备相当多的能力和经验

简化和效率

虽然我自己是云计算的从业者,从阿里云到蚂蚁金服,从KVM虚拟化到Kubernetes容器调度,整个技术栈实际上随着规模的扩展越来越复杂,而我们真正的目标实际上是把业务软件部署到基础设施上。这么多年来,负载均衡依然是负载均衡,数据库依然是数据库,软件实现的功能其实变化并没有那么夸张的复杂,但是基础设施为了追求云计算的规模和适应海量不同用户的需求而变得非常庞大复杂。

其实可能已经复杂到没有任何人能够全面掌握,而云计算背后复杂的组件依赖,已经使得它成为一个巨兽,每个功能的改进和变化都是背后无数的人力。不断的新功能和新bug,让这个惊人的巨兽在天地间狂奔和变化万千。

简单比喻一下,普通人能够用到的Execl的功能可能只有其全部功能的1/100,对云计算也是如此。太多太复杂的逻辑包装,你已尽无法分辨哪些是你真正需要的,而实现的技术功能可能只是十年前的 Nginx 反向代理+WEB服务+数据库+缓存。而这么多年,nginx和mysql有的很多云原生功能扩展对于普通用户来说可能完全无法理解也无法使用,太多的人力资源投入到云原生的调度和复杂的依赖中,真正的基石 – Nginx 和 MySQL的 性能和功能,可能对大多数人来说,和十年前没有什么两样。

去中心化

DHH 提到去中心化,也许是我们这个互联网目前背离早期理想的困境写照: 巨型互联网公司精心构建了互联网花园,各自圈起了势力范围。这使得用户一方面觉得非常便利和开心,另一方面也失去了自由的能力。

37signals

传奇的企业 37signals (SaaS)在2023年 Breaking Free From the Cloud With Mrsk: Just Enough Orchestration for Your Apps 给予我们的启示

kamal-deploy 研发的 Kamal 是一种简化版调度管理系统,用于部署Docker系统,最初是为 Ruby on Rails 应用开发的,现在已经可以部署任何web应用。

备注

请参考 Rails简介 对37signals的介绍

参考