从MegaEase看云原生
MegaEase是左耳朵耗子创办的公司,一家帮助企业上云、企业数字化的公司。其产品主要围绕于CloudNative方向,希望通过CloudNative方式帮助企业解决业务需求变化迅速、支持大规模在线、系统更稳定、更低成本的架构可控。
左耳朵耗子是业界知名技术大牛,其对云原生的理解我还是非常相信的,相信很多人对于云原生很熟悉,但究竟什么是云原生可能也不是很明白,结合MegaEase的技术产品,我们可以从侧面去了解下云原生。
数字化时代企业发展有哪些要求呢?
需求迭代频繁,变更速度要求高;
大规模用户在线;
整个系统稳定性要求更高;
场景更多,数据更多;
自主可控,成本低;
要让系统满足这样的设计要求,需要有专门的规划和大量的专业技术方案实现。
MegaEase希望将这些能力不断沉下来提供给用户,满足用户低成本的实现企业数字化转型。
上面聊的是企业发展阶段遇到的问题与挑战,那为什么云原生可以解决这些问题呢?
那就得先说说云原生特点,云原生是把云计算的核心技术拿出来直接无缝集成到应用层,让应用一出生就是云化的,对用户来说就没有上云不上云的概念了,他一直在云上。
谷歌当年把自己的搜索服务放在了不稳定的x86+linux机器上,服务还贼稳定,他们可以视为一出生就在云上的公司了。
李彦宏也说过类似的话,当年李彦宏说:云计算不过是新瓶装旧酒,没啥新技术。很多人骂他,说他没有前瞻能力。李彦宏后来说:因为百度第一天就在云上,大规模存储计算,所以对百度来说,云没啥新意。
那云原生和云计算啥区别呢?云原生是把原有云计算资源型方式转向了以应用和服务的方向。
比如云原生下的Serverless、Service Mesh、K8S、API Managment、MicroService都可以说是在应用服务层面的事情,不再是基础资源了。
目前云原生技术很庞杂,下面这些产品都说自己是云原生应用:
好的架构的核心是要有一套精良设计的控制和调度系统。
云计算就是在调度,调度需要很多控制系统。通过流量调度、资源调度、服务调度这三个控制系统,可以让整个架构在性能、稳定性、可运维性上有很大提升。
想要从这么多的云原生公司里面脱颖而出,需要有些噱头。比如:一行代码不改做秒杀;用户进行全链路灰度、无入侵的全链路压测;灰度发布系统、高可用中间件、跨数据中心多活等。
说的无外乎是,低入侵,让用户应用改造成本到0。
怎么低入侵呢?基本是java字节码注入、sidecar、网关等。
这倒是和我的架构价值观相同:
架构迭代是没有终点的,只不过是有迭代阶段,不要让一个阶段的技术迭代变成下一阶段的技术债。
架构分成两部分:技术相关、业务相关。
业务内核如果变化太大,不如重新搭建个系统。技术层面,要留有扩展性,低侵入最好。
MegaEase的方式之一是通过网关,只不过他的网关不是简单的nginx这种反向代理,而是在里面也融合了一些扩展能力。
他的网关由Go插件+WebAssemebly+FaaS组成。
方式之二是Mesh,Mesh解决的是端到端的流量调度,也就实现了用户一行代码不改,实现服务治理、服务监控、调用链追踪、流量着色、用户灰度等功能。因为这些事都可以通过Sidecar实现,当然不需要改代码了。
他的Mesh方案支持和SpringCloud绑定,和K8S对比如下:
他使用网关做边车和流量网关,使用agent做java Agent服务内部监控。这样Sidecar和JavaAgent都是非入侵的,也就实现了不改代码的低侵入。
通过Mesh还可以实现压测功能:
第三部分是观测性和运维性的能力,是通过链路追踪+监控做的。不是简单的一个监控告警平台。一个好的监控不仅要收集监控数据,还要关联数据,数据不关联则没有意义。
链路串起多个中间件,API->服务调用->应用日志->中间件->底层资源数据,这样可以说清楚某台服务器会影响对外的哪些API,且判断某个边缘服务是否会影响到核心链路。
以上差不多是MegaEase提供的一些云原生解决方案,围绕于Mesh、网关、运维可观测性等,用到的技术无外乎也是Sidecar、K8S、Agent这些耳熟能详的技术,属于术的层面。
而云原生的价值在我来看是其概念或方法论,也就是要求我们后续服务的设计要面向云而设计,这才是道。
道往往比术更重要。