code学习

硬之城携手阿里云Serverless应用引擎(SAE)打造低代码平台

作者:硬之城产品总监陈泽涛,阿里云云原生高级架构师洛浩

深圳前海硬之城,成立于2016年,是一家数字化的电子产业供应链和制造平台,它的定位是为具有新硬件需求的科创类公司提供包括电子器件、PCB、SMT的一站式的交付能力服务。对于中小企业来说,这是一个合理备货合理采买的获取供应链服务+制造加工服务平台。

相比传统的代码开发,每一个市场需求的研发都需要耗费不少的研发资源投入到对应的需求开发中。这其中不仅有代码开发的工作,而且前期与工程师间的沟通工作也占用了不少资源。这不仅让每个需求都会消耗不少的研发成本,而且市场的需求也需要等待研发完成才能响应。这也是为什么硬之城选择做低代码平台的原因。

我们在实际的业务中,会频繁的收到来自市场的需求,这些需求还存在一部分不确定性和尝试性的需求。为此一直让我们的研发资源相当紧张。低代码平台的打造,不仅让没有编程基础的业务可以快速上手,让各业务部门都可以搭建自己的管理应用,大大缓解了研发资源紧张的问题。

在我们实际的使用过程中,发现低代码平台不仅可以覆盖许多简单的需求研发,而且许多常规的、复杂的需求也可以通过低代码平台完成。特别在不确定性和尝试性的需求,由于此类需求本身存在不稳定性,需求变更的情况非常普遍。这时由于低代码的迭代成本和门槛低,业务可以直接在后台修改应用,以达到快速的响应市场目标。

目前我们低代码平台使用Java和Nodejs开发,后端采用SpringBoot,前端采用Vue,基于ECS进行部署时,采用Shell脚本发布,并基于Nginx负载到多台主机。但是我们经常会碰到服务器资源占用不平衡,运维成本高,操作权限分配繁琐等问题,这给我们整个团队的协作造成了困扰,为此我们一直在寻找对应的解决方案。

一直到我们发现可以实现全托管、免运维、高弹性的SEA平台。SEA支持开源微服务、开源定时任务框架、Web应用的全托管。为此我们进行了架构搭建,发现SEA可以合理分配应用和服务器之间的资源,以及应用动态伸缩灵活性。这有效的降低了服务器运维门槛,避免风险操作,简化了我们团队成员对应用蓝绿发布的操作流程,提升了发布安全性和可靠性。

通过一段时间的使用,我们目前可以通过云效流水线发布SAE应用,镜像构建存储都缓存到阿里云镜像库,每位该项目的开发人员都能通过流水线发布应用,并且基于阿里云RAM系统可以很好的控制权限,发布效率大大提升,每一个SAE应都对应有独立的节点,不需要考虑应用是要选取发布到哪一台主机,只需要做好SLB负载均衡,实际资源用多少付费多少,也不需要操心服务器的各种机器维护问题,明显提升了运维工作的效率。对应用本身来说,就是人效的提升,更加方便简洁的步骤就能完成一个应用的部署周期。

对于运维管理上来说,就是更加轻便,少了很多诡异的操心事。对于整个微服务架构来说就是脉络更加清晰,可扩展性更强,只需要点一下即可扩展更多更强的负载能力。公司做成本预算的时候也能更加可控,不需要一堆服务器和IP。

硬之城低码平台未来规划及愿景

未来我们期望业务与技术能并行。适合业务自行管理的需求,业务自身可以通过低代码就可以快速的完成他自己的需求上线,并自行维护。对于非常复杂及存在技术门槛的需求,此时技术人员才介入,让技术人员更专注的解决高价值、高技术的问题。这不仅让业务可以快速响应市场需求,也让技术人员有更多的精力去解决企业的技术问题。最终让企业的业务人员和技术人员都流动起来,专注起来,以此来让企业更加有活力。

SAE针对SaaS场景的方案及优势

通过硬之城的实践,我们也能感受到SAE对开发和运维效率的极大提升,如下图所示,这其实是因为SAE结合了容器、Serverless、微服务的优点,打造一站式应用开发部署平台。

对下屏蔽了K8S等资源维护的复杂性,对上提供全应用生命周期管理、微服务治理、APM、弹性管理等能力,可以让用户更简单的完成容器化、应用迁移、业务上云。

硬之城携手阿里云Serverless应用引擎(SAE)打造低代码平台

同时对于已经实现了微服务化、或者仍然处于单体架构的存量应用,SAE也可以支持“0”代码改造迁移。如下图,假定业务是基于ECS部署的,如果想提升业务的弹性能力以更好的应对流量波动,或者就是单纯的想简化资源的管理和运维等繁琐的事情,那么SAE就可以直接把ECS替换掉,也就是把部署在ECS上的业务代码在SAE平台上重新部署即可,前端安全、后端数据库等资源的部署和使用仍然保持不变。这里需要提醒下,如果是基于ECS自建的数据库、消息中间件等带强状态的服务,是不适合迁移到SAE上的,毕竟一旦发生弹性伸缩,就会造成“状态数据”的缺失,如果不是对价格非常敏感,建议这部分服务可以迁移到云上的PaaS产品以取得更好的稳定性。

硬之城携手阿里云Serverless应用引擎(SAE)打造低代码平台

基于以上两点,我们就可以再进一步的扩展,针对大部分SaaS企业客户,我们发现有两类业务诉求:一类是采用订阅制的SaaS企业,打造自身的服务平台,对外提供像订票、餐饮服务、机酒、出行、ERP、HRP等服务。这类企业核心关注的是垂直业务领域的竞争力和敏捷迭代,以保证自身能够快速响应市场。同时这类业务对弹性也存在着较大的诉求,那么基于SAE构建弹性微服务能力、或者弹性容器就非常的契合,既可以让用户聚焦业务开发,同时平台提供资源管理、弹性、应用管理等一体化的能力,极大的简化了运维成本,还能通过弹性来提升资源利用率,达到节省资源成本的目的。SAE还可以和Jenkins或者云效联动构建流水线,来提升整体的开发部署效率。

硬之城携手阿里云Serverless应用引擎(SAE)打造低代码平台

还有一类 SaaS 企业会承接很多独立部署的需求,把自身构建的业务平台在最终客户的阿里云账号或者IDC里进行单独交付。针对阿里云上部署的服务,就会面临着开资源、部署、后期运维等一系列流程,尤其是最终客户的技术能力参差不齐,那么如何能快速完成业务部署、并简化后期的排障和维护工作就显得尤为重要。在这里,SAE 提供了基于 terraform 的一键部署方式,可以把业务代码+SAE资源、VPC 网络、SLB、数据库等构成业务系统的全部产品资源,分钟级部署并拉起,具备极强的可复制性。如下图所示,再加上 SAE 自带的 APM 监控能力和弹性免运维的特性,对于后续交付最终客户后,也能极大降低维护成本。