用POLARDB構建客到智慧餐飲系統實踐
在新零售成為大趨勢的今天,餐飲行業也加入到這一浪潮之中。智慧餐飲系統將幫助餐飲行業從多個維度提升自己的運營能力和收益,而打造智慧餐飲系統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的變動有可能影響到第三方介面呼叫。