在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中。智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点。本文中果仁软件联合创始人&研发副总赵亚南就为大家带来了关于使用阿里云POLARDB构建客到智能餐饮系统实践分享。
本次分享中,首先介绍了“客到云餐饮”这款SaaS化产品,其次介绍随着业务发展所需要面对的挑战,以及“客到”为什么要选择POLARDB。第三将讲述使用POLARDB的解决方案以及迁移的整个过程所做的实践,最后将分享将数据库架构升级到POLARDB之后的效果。
果仁软件与“客到云餐饮”背景介绍
果仁软件早在2008年就是淘宝服务平台的第一批软件开发商,当时做了“麦多多”产品,也正是因为这款产品,果仁软件成为了阿里云的第一批客户。在使用阿里云的过程中也逐渐更多地了解了这些云产品,目前整体的技术架构都是基于阿里云的。使用阿里云产品为果仁软件带来的好处就是节省了大量运维成本,能够使技术团队更加专注于自身产品和业务的开发上。四年前,基于使用阿里云的经验和对于软件的理解,果仁软件参与到了餐饮行业的SaaS化软件“客到云餐饮”开发中。客到主要实现了SaaS化餐饮解决方案,包括了点餐、收银、财务以及后厨管理和营销、员工绩效考核等。
“客到”通过智能化、数字化的餐饮服务软件,可以帮助餐厅更好地提升经营效率和服务质量,让客户真正地享受到餐饮行业所带来的服务。智能化点餐以及收银能够帮助餐厅很好地降低了人力成本和时间成本,智能化餐饮系统能够让餐厅的工作人员直接在报表中看到所有的流水信息,使得对账工作更加轻松简单。餐厅的厨师本身就非常忙碌,那么借助智能化后厨管理就能帮助厨师有序地制作菜品,进而提升后厨效率。会员营销是SaaS化中常用的功能,但是对于餐饮行业,传统会员营销方式并不能有效地吸引顾客,而借助智能系统,餐厅可以开展店内店外的智能营销,使得活动更加高效,为餐厅带来更多的资金流。很多餐饮企业越来越注意实时化的信息,对于报表的实时性要求更高。因此,餐饮行业的SaaS化就可以从这样的切入点开展。此外,“客到”在用户体验上也做了精细化设置,比较简洁、实用。而通过软件与智能硬件的配合,就能够更好地赋能餐饮行业。
“客到”借助阿里云的SaaS化发展之路
餐饮行业的特点就是业务峰值比较高,特别是午餐和晚餐时段这一点就体现的更为明显。通过阿里云后台的云监控可以看到在这两个时间段,几乎在瞬间系统压力就会大幅度提升,这就需要系统能够很好地应对峰值情况。此外,周末的晚上会比平时出现更大的峰值,能够达到平时的2到3倍。而且餐厅的订单数据量也是非常大的,正常的一家中餐厅每餐大概会销售200到250单,一些快餐厅甚至会达到1000到2000单。这样如果服务1万家餐厅,订单量就能达到每天100万,每年订单量就会达到7、8亿。结合菜单的明细数据,这样的数据量是非常大的。而且由于涉及到订单、会员以及促销等信息,因此表结构也会比较大,而且在高峰的时候这些业务都会出现高并发。此外,由于餐厅的特点,因此对于系统的稳定性要求非常高,基本上可以说是“365*24”小时的可用性要求。因为很多餐厅不仅提供中餐和晚餐,还会提供夜宵和早餐。之前用户量小时,就可以等待用户没有的时候进行发布新版本,而当用户量增大之后发现,这样的空闲时段已经不存在了。
在最初设计餐饮软件的时候,认为只要餐厅有网络就完全可以实现SaaS化。但是后来发现在业务高峰的时候,即使带宽足够,但是在访问云端数据的时候还是非常差,甚至中断而影响业务。基于这样的情况,客到实现了本地的架构调整,能够实现即使断网也不影响业务流程的继续运行,用户对于网络情况可以实现无感知,这一点在友商内能够做到的也并不多,因此也收获了较好的口碑。
随着业务发展量越来越大,用户量也越来越多,需求不断增加,业务的逻辑也越来越复杂。随着多种点餐方式以及多种下单场景的增加,对于业务调整的及时性要求越来越高。此外,产品线也越来越丰富,从3个产品飞速扩展得到8个产品。而随着业务量的增长,历史数据也飞速增长,有时候会因为云端的“慢SQL”出现卡顿,暴露出一些隐藏的问题。通过阿里云监控,及时地感知到高峰时期的CPU、内存等的报警信息,进而增加服务器或者服务器组的处理。针对于上述出现的问题,经常会做一些相应的分析。从页面的加载、前端再到后台数据库都会进行排查。在系统优化方面,会每天排查出慢SQL进行优化,包括RDS也会存在慢查询的统计,虽然慢查询并不会影响业务的正常运转,但是总会带来一些不好的用户体验。针对于以上的情况,需要增加一些索引机制以及缓存层等,对于一些历史数据进行归档,对于一些业务进行拆分,减少单表的压力,同时使得业务架构更加清晰。
虽然以上的技术问题并不会影响业务的正常运转,但是有限的研发精力总是被这些技术问题所牵绊,就会影响技术团队开发新的需求和功能的速度和效率。特别是对于创业公司而言,研发效率和用户需求是最为注重的关键点。因此更加希望将技术精力集中在产品业务的开发中,做好产品,服务好客户。如果能够通过更好的技术方式和产品减少非主线研发的工作量也是各个公司以及架构师所需要考虑的。也就是说除了需要解决当前问题,还需要能够支撑起两年之内的业务扩展,虽然中间也会经历架构演变,但是对于架构师而言,需要做到心里有底。此外,好的产品一定能够提供好的性能,同时在费用上需要做到可控和可预算。
为大家简单分享一下“客到”基于阿里云的架构设计。首先,从用户开始访问开始,阿里云提供了域名解析服务和CDN加速以及网络安全方面的Web应用防火墙。经过域名解析之后就到了前端的服务器,而通过负载均衡器将会将前置服务器和后置服务器再次分离,进而解决应用层面的并发请求量。应用服务器为了解决Session共享问题可以应用Redis解决,实现单机出现宕机不影响用户使用,从而实现高可用。同时Redis缓存可以有效缓解数据库层面的压力,但是在使用的时候也需要注意其自身的特点,比如带宽限制以及逻辑上需要和存储层保持一致。存储层之前使用RDS,现在换用了POLARDB,之前通过一台主RDS和几个RDS只读节点就基本上解决了关系型存储,可以对于订单的历史数据完成异步的备份。对于文件和图片等的存储可以放在阿里云OSS之上,这样比放在磁盘上更加节省成本。在安全方面,使用最多的就是云监控产品,这样就可以实现问题的提前监控预警。在设计架构的时候,架构师需要不断地梳理架构,这样在进行架构演进的时候就可以容易地分析和判断架构是否可以迁移。
“客到”数据库架构向POLARDB迁移实践
在进行架构迁移的可行性分析的时候,首先要把现在架构的情况,涉及到的业务以及运行的主机、ECS以及OSS都需要进行风险评估。所以在实际进行系统迁移的时候需要首先进行评估。之后为了打消研发和产品对于采用新技术和产品的顾虑,就需要做充分的准备和测试,比如对于应用POLARDB而言,需要对于性能进行充分测试,比如100%兼容MySQL,还需要对于业务进行全流程测试,在测试完成之后需要第一时间进行测试反馈。在迁移之后需要进行效果评估,“客到”在迁移到POLARDB之后发现页面响应速度得到了80%的提升,复杂SQL处理性能得到了200%的提升,而费用则降低了20%。而且整个迁移过程只使用了1个多小时,生产环境目前平稳运行,并且业务代码没有做任何修改,只做了配置文件的简单替换。
最后为大家分享在数据库架构迁移过程中需要注意的两个关键点,第一点就是VPC的迁移,POLARDB使用的是VPC网络连接,那么在迁移的时候就需要做好网络规划,需要把握好时间点。此外,需要注意白名单的变化,因为在整个网络架构发生变化的时候,外网IP的变动有可能影响到第三方接口调用。