当前位置: 首页 > 后端技术 > Java

阿里云Serverless助力企业全面拥抱云原生

时间:2023-04-01 18:39:45 Java

简介:相信随着云计算的发展,Serverless将成为云时代默认的计算范式,越来越多的企业客户将采用这项技术。作者:罗浩视频分析点此查看相关直播~serverless应用引擎的组件架构最早,大家按照单体架构设计软件,包括软件相关的数据库,存储等,会是直接部署到一台物理服务器上。但是,单体应用的问题是,随着企业规模逐渐增大,扩展性较差,发布效率很低。后来进入微服务时代,微服务使用的主要框架是基于Java语言的。微服务架构的一个优点是迭代效率很高,扩展性比较好,但是微服务占用的资源和成本比较高。随着技术的演进,容器化加速了微服务的落地。但并不是所有的企业都适合微服务。随着系统复杂度的增加,微服务的效率和运维成本也随之增加。企业是选择单体架构还是微服务,取决于系统的复杂程度。随着公有云的发展,越来越多的用户会将业务部署在云上。随着云的使用越来越深入,架构的优势越来越明显。第一阶段叫做Rehost,也就是rehosting,在不改变应用的情况下,用云主机代替本地物理服务器,但这种托管模式是最基本的使用云的方式,其效率并没有发挥到最大。随着进一步的发展,我们需要重新平台化,使用托管云服务来替代自建的应用基础设施,基本不改变应用。但是重新平台并不是最好的方法。随着进一步的发展,我们可以重新架构这个应用程序,即Refactor。这时候,我们可以通过微服务加容器的方式,重构底层架构和软件架构,实现云的价值最大化。从长远来看,整体收益是最大的,但从短期来看,其迁移成本要求比较高。如果应用能够按照云原生的产品或服务进行重构和开发,就可以尽情享受云计算带来的便利。但同时也存在几个问题:投入成本(迁移/改造);与云供应商的绑定程度;云的易用性(入门/维护的门槛);安全。阿里云推出了无服务器应用引擎(SAE),为应用程序或微服务提供了一个完全托管的平台。比如Java微服务目前可以零修改迁移部署到云端,支持完备的微服务治理能力。如果用户想做容器化升级,也可以使用这个平台。Serverless应用引擎的核心技术SAE由哪些组件组成?您如何组合各种产品功能?你可以看看这个组件架构。图中绿色部分是用户需要关注的,是各种业务应用。同时,SAE会提供各种工具,比如Cloudtoolkit插件,辅助将本地代码部署到云端,比如连接云端,提供流水线能力。图中橙色部分是SAE平台,会提供很多能力。比如你写一个商城应用,前台就是一个独立的服务模块,可以独立迭代、开发或者管理。还可以为前台服务配置弹性策略。比如在大促期间,前台服务可以根据实际流量自动伸缩。这也是SAE的一个核心价值。因此,SAE不仅可以提供资源管理能力,还可以提供应用生命周期管理和微服务治理。它是一个完全托管的应用程序平台。在资源层面,SAE对K8s集群进行了封装。K8s下面是基础设施,由神龙服务器和安全容器构建。在资源层面,SAE将帮助用户提供资源管理和调度能力。接下来说一下SAE的核心竞争力。首先我们来看一下传统企业用户部署应用的整个过程。首先需要购买ECS资源,然后搭建集群,初始化集群,然后搭建环境。研发完成后,开始测试部署,监控、日志等组件也需要部署。业务全部上线后,会进入维护状态,包括资源和业务的运维。使用SAE可以节省很多步骤。首先,底层的K8s集群由云厂商维护。用户只需提交镜像或JAR包即可将系统部署到SAE平台。其次,平台已经提供了监控和日志系统。用户只需要关注业务逻辑,不需要维护资源。如果用户想做灰度发布怎么办?SAE还为用户提供了单批、分批、金丝雀等发布策略。还默认提供了让部署在平台上的业务不停更新的能力。对于用户需求非常强烈的金丝雀发布,SAE可以根据请求灰度内容,根据流量比例灰度。比如你要做流量比例灰度,可以50%分批发布,可以分两批发送。同时,也可以根据精确的流量比例进行灰度化。用户在使用该平台时也会非常关注弹性能力,SAE提供了非常丰富的弹性配置。可以根据基础监控指标(CPU、Mem)和业务监控指标(QPS、RT)触发水平伸缩。按照这种负载模型进行弹性伸缩,一般更适用于突发性流量或者具有典型脉冲的应用场景。比如网络游戏、社交平台。二是时间弹性。这种模式更适合餐饮、出行等有峰有谷的应用场景。那么弹性效率能否跟得上弹性需求呢?一般情况下,当我们将镜像部署到平台上时,系统会经过一个资源调度流程,然后创建POD,拉取用户镜像,创建容器,启动容器。为了提高这种效率,SAE首先为应用程序提供就地升级能力。针对应用升级发布,可直接拉取用户最新镜像在原有资源上更新部署,避免重新构建POD,帮助用户提升部署效率42%。其次,SAE还提供了镜像加速能力,可以帮助用户提升30%的弹性效率。即当用户创建容器时,会按需同步拉取用户镜像,可以减少服务启动时间。第三,SAE也加速了Java应用的启动。提供的DragonwellJDK版本可以在JVM和进程启动时生成一个缓存,然后在再次启动时加速应用程序,缩短启动时间。最后,SAE将为用户提供这种监控和应用诊断能力,可以查询服务调用链、接口响应时间、GC次数、慢SQL等,帮助用户快速定位问题。Serverless应用引擎最佳实践微服务/应用迁移到SAE,大概有几个步骤。首先,如果是单体应用,可以直接创建压缩包部署到平台上,但是单体应用需要存储和计算分离,即数据库和计算代码分离,部署SAE的计算部分。微服务应用可以选择写一个docker文件,做一个镜像,然后推送到镜像仓库完成部署。微服务应用也可以选择打包成JAR/WAR包,直接部署到SAE。在降低成本方面,SAE还推出了一键启停功能。针对不同的环境,您可以定期启动和停止应用程序。比如测试环境,晚上没人用的时候,可以直接关闭测试环境,节省成本。SAE提供了多种工具和方法来构建DevOps系统。比如Jenkins是大部分企业用户常用的,或者云上的云效应用于CI/CD。在应用端,您可以在SAE平台上配置定时启停、监控告警等,完成业务运维。对于企业用户更关心的环境管理和权限划分,SAE推荐使用命名空间来隔离环境,不同命名空间下的应用无法相互通信。另外,SAE推荐使用权限助手为不同团队生成namedempty或application服务对应的权限策略,最终让不同团队之间的应用不可见,无法操作。有些用户会关注SAE和ECS的对比。做了哪些改进?一是提供这种免运维的全托管能力,二是一站式的全应用生命周期管理能力,以及微服务的治理优化、应用监控等,SAE为用户提供的所有增值体验。Serverless应用引擎客户案例第一个TimingApp是一款教育领域的在线课程学习APP。它是一个典型的单体应用程序重构为微服务并迁移到SAE平台。随着疫情的发展,Timing的流量激增后,原有的架构难以支撑业务的发展,微服务转型开始了。在微服务的过程中,选择了SAE平台,比如用户中心、学习中心、自学中心、图书馆中心等,都被拆解成独立的服务模块。与使用云主机自行构建微服务的方式相比,节省了约35%的成本。我要分享的另一个案例是爱奇艺体育,它的整个业务都部署在SAE平台上。今年6月和7月,爱奇艺体育转播了欧洲杯,当时流量很高;但在运动会结束后,流量又开始下降,所以灵活性对它来说尤为重要。SAE丰富的弹性能力可以帮助节省大量运维成本,扩容效率较之前提升40%。其次,内置的应用监控平台在业务遇到问题时也提升了30%的排查效率。总体而言,SAE帮助爱奇艺体育提高了近50%的资源利用率。相信随着云计算的发展,Serverless将成为云时代默认的计算范式,越来越多的企业客户将采用该技术。点此前往Serverless社区官网获取更多信息!版权声明:本文内容由阿里云实名注册用户投稿,版权归原作者所有。阿里云开发者社区不拥有自己的版权,也不承担相应的法律责任。具体规则请参考《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如发现本社区涉嫌抄袭内容,请填写侵权投诉表进行举报,一经查实,本社区将立即删除涉嫌侵权内容。