以下是精彩視頻內容整理,主要分為五個部分:
一、項目簡介;
二、系統架構;
三、應用實踐;
四、遠程協作實踐;
五、項目總結。
一、項目簡介
(一)項目背景
我們是外研社的技術合作夥伴,去年經過雙方的溝通努力,我們打造了一款新概念英語這樣的產品。這款產品無論是從公益角度,社會影響力角度,還是從收益角度,都起了不錯的效果。
今年年初的時候,大家都知道在疫情期間,中小學,大學都面臨這樣一個問題。大家要在家裡邊不能去正常的學習。於是我們想,是不是也可以在這個時間點一起做一些對於社會有價值的事情。所以我們做了一些討論,包括產品的策劃,可能面臨的技術問題,所有的投入的工作量風險等等。溝通完之後,我們下決心在這個時間點,做一次公益助學這樣的活動。但我們面臨很多挑戰,我會給大家去展開。
(二)項目分析
在當時這個場景下,最大的挑戰其實就是如何能快速地去迭代,去推出這款產品。在疫情的條件下,在當時全國學子面臨的這種壓力條件下,速度可能是最重要的事情。一旦速度加快的時候,很多事情的複雜度會增加。
第一,我們希望3~4天能夠把這件事做出來,留給我們的時間大概有96小時。這段時間裡邊如何把團隊去組建好,如何把產品設計好,如何保證這個產品還能達到想要的效果,這個時間的壓力其實非常大的。
第二,我們實際上是對一個在線的產品去進行修改。這時候面臨的問題就是說,現在既有的客戶是不是會為我們的修改產生一些影響,會影響到既有客戶的體驗,本來是希望做好事,可能反而變成壞事,可能變的得不償失。
第三,因為大家都是分散在全國各地,溝通效率變低,協作難度變大。
第四,最後一個難題就是說大家都是在一個非常規的工作環境下,我們的質量怎麼去保證,如何能做一些有效的測試,驗證如何做,保證我們能拿出來的產品對於大家來說是一個值得相信的產品。
(三)項目成果
這個結果還是不錯的。在過去的這段時間裡邊,經過團隊的努力,通過迭代,敏捷研發這樣的方式,我們累計發了7版,不斷的給大家去優化,把產品的體驗不斷提升。從產品的策劃到最終產品的交付上線,在96小時內全部完成。最終上線之後,流量增長和預期基本上符合。
二、系統架構
(一)業務需求
首先想給大家介紹一下業務需求,因為所有的業務系統的架構都是為了滿足一定的業務需求而去設計的。業務需求有如下三點。
第一,因為這次要做一個公益的活動,不同於以往的付費的產品。付費產品都要以突出的價格去提供,讓大家能夠使用。所以,對我們的當時的這些商品價格,訂貨流程,訂單等等這一系列的邏輯都要做一個調整。
第二,因為這個品牌本身有很大的知名度,這時候一旦做這樣的公益活動,可以預見到當時流量會非常高。所以當時做了很多的模型預估判斷,系統到底要增加多大的彈性能力,才能扛住流量激增的壓力。當時判斷了一下,我們覺得這個系統可能至少要承載20倍以上的流量激增。在這種情況下,我們一定要保障系統正常運行。
第三,系統已上線有一段時間了,已經有大量的客戶。不能因為做了公益活動,就降低你的質量。不因流量激增影響用戶體驗。
(二)項目架構
下面簡單介紹一下整個項目的架構。我們整個核心是基於阿里雲的ACK容器服務去構建我們的基礎設施。以微服務為核心去打造我們的應用體系。實際上核心是三層。最上層是為了加速,大家都會用CDN的方式去做,這個是常規的做法。中間層,有三個支柱。
首先是我們的文化,我們的團隊協作模式。這裡邊我們很關心的是我們在多團隊的合作,以及技術服務。
第二塊是容器服務,在很早的時候就選擇了容器服務做了很好的基礎,所以才能夠相對從容的應對這次流量激增的壓力。
第三塊就是咱們核心的微服務。有微服務這樣一個架構的話,面臨流量的壓力,也會讓我們在開發層面或者說商業層面上面臨的壓力小一些。最底層完全依靠阿里雲其他IaaS層或PaaS資源對我們產品團隊的支持。讓我們聚焦在需要去解決的問題上,通過我們的DevOps文化,通過我們服務的支撐,以及微服務的實踐共同支撐這次項目的整個工作架構。
(三)微服務層架構
微服務這塊我們選用了行業內最主流的Spring Cloud體系技術棧作為我們的核心。下面依託阿里雲提供的鏡像服務,數據服務,安全服務等等。在上層包含兩層的微服務架構。一層是面向業務層的微服務,另外一個是系統層的微服務。
(四)容器層架構
(1)阿里雲容器服務
容器服務ACK有如下四個特點。第一,提供高性能可伸縮的容器應用管理服務。第二,支持企業級Kubernetes容器化應用的生命週期管理。第三,簡化集群的搭建和擴容等運維工作。第四,整合阿里雲虛擬化、存儲、網絡和安全能力,打造雲端最佳Kubernetes容器化應用運行環境。
(2)選型依據
(3)彈性設計
(五)數據層架構
數據層架構如下圖所示,按重要度排序,從上到下依次是靜態數據,業務數據,熱數據和高速大數據。
三、應用實踐
(一)應用實踐架構
(二)DevOps實踐架構
(三)性能優化實踐
四、遠程協作實踐
(一)協作挑戰
協作挑戰有如下三種問題。第一,網絡問題。第二,聯調問題。第三,項目管理問題。
(二)協作方案
協作方案包括如下三個。第一,分佈式本地開發和集中式線上測試。第二,釘釘語音和電話。第三,GitLab和敏捷。
五、項目總結
總結起來,該公益項目能快、準、狠地完成,主要得益於以下三個方面。第一,採用了微服務架構,模塊之間耦合度較低,新功能上線可滾動發佈,加上團隊具備DevOps能力,因此保質保量地完成了研發任務。第二,完全基於阿里雲的容器服務ACK構建,同時得益於阿里雲強大而全面的產品矩陣來加持,使整個項目的穩定性、可靠性更上了一層樓。第三,用到了大量的其他產品如OSS、CDN、PTS等,強大而且全面的阿里雲是本項目成功上線的幕後英雄。
關鍵詞:容器服務,雲原生,微服務,抗疫助學,敏捷研發