发布时间:2023-01-28 15:30
早期业务规模比较简单,大多团队开发采用单体应用,已经能够很好地满足团队的业务需求,并且能够快速迭代。但随着业务规模的不断增长,系统变得越来越复杂,单体应用逐渐无法满足线上生产的问题。比如电商业务中,如果将交易、支付,商品等所有功能都集中在单体应用中开发,有可能会出现发布简单商品功能影响到交易,从而对整个电商系统产生影响,给企业造成损失。
这个时候很多团队会把单体应用架构改为微服务的架构,解决单体应用的问题。但随着业务进一步发展,系统愈加复杂,加之新技术的到来,比如云原生时代下成了标准的 K8s 以及 容器镜像 Docker 等,研发运维投入会越来越大,需要保证几十甚至几百个服务正常运行与协作,这给运维带来了很大的挑战:
1、效率:随着应用规模的扩张,新的研发团队需要面临很多开发和测试中的复杂性问题。在团队协作上,不同应用团队之间如何更好地形成稳定的调用链路,在几十,几百甚至上千个应用的大规模场景里如何进行调用链路上应用的快速部署和灰度。此外,如此多应用的流量的处理、调用链路的跟踪和服务鉴权也非常影响效率。
2、稳定:微服务化之后,会出现调用链路上某核心应用出现问题,导致整体系统发生雪崩,而且有时缺少可视化、可观测性的系统来帮助快速定位分析问题,导致难以快速定位到出现问题的应用,造成长时间的损失;
3、成本:单体应用一般只需部署几台机器;到了微服务时代,随着应用数的剧增,出于可用性的考虑需要为每个应用保持一些冗余,比如一次大促中,一个调用链路会涉及到十几个应用,为了稳定性以及调用链路的安全,会进行整个链路应用的扩容,而实际上很多应用可能长时间没有流量,服务器空闲,导致巨大的成本浪费。
面对微服务带来的这些问题和需求, Serverless 应用引擎在这方面都做了哪些工作? 带来哪些改变?
SAE 是面向微服务应用的 Serverless PaaS 平台。作为云平台,它能够为微服务应用进行全生命周期的托管。它能将 Serverless 和 K8s 本身的红利集中在一起,让微服务应用快速上线。以产品化的形式快速提供给用户,开箱即用,解决用户常见的微服务问题,提升研发效率。
SAE 提供了包含但不限于 CI/CD 流水线、微服务框架、 Spring Cloud、 Dubbo 、共享注册中心、K8s 容器以及诸多运维相关的功能,包含调用链、日志、告警、性能监控、流量的治理以及自动弹性等。它是 Serverless 框架与微服务进行深度结合的最佳实践的平台。
在 Serverless 时代下,微服务的趋势是客户端越来越薄,其中与服务治理、业务逻辑无关的部分被沉淀在 Java agent 等组件里,通过字节码的方式注入到业务中,对业务开发无侵入、无感知,并在过程中提供了丰富的微服务治理能力。比如流量管理相关的无损上下线、金丝雀发布、可视化数据上报等能力。
针对非 Java 场景,Java agent 也能够与不同的微服务框架进行通信。此外,与 Sidecar 之间的通信也正在不断完善建设中。
Serverless 应用引擎(SAE)基于 Alibaba CloudToolkit 插件+ 跳板机可以实现: