掌訊信息通過采用阿里云效和SAE,實現了高效的持續交付和代碼質量管理,顯著提升了開發和交付效率,降低了成本,實現了低門檻的微服務架構轉型。
背景
掌訊信息技術有限公司創立于2009年,是一家提供企業信息化咨詢、創新型軟件產品、電商代運營服務,標準化管理、快速發展的高新技術企業。當前公司正處于企業互聯網市場突破轉型重要階段,希望將更多精力轉移到業務創新,提升開發和交付效率,低成本試錯。因此選擇一套低門檻開箱即用的持續交付、快速部署&運維平臺尤為重要。
面對的挑戰
組織、人員權限管理復雜
公司是阿里云的重度用戶,釘釘,阿里云等,Jenkins的權限管理獨立一套,與其它系統不能很好的對接,維護成本非常高。
好的工程實踐、流程規范不容易復用,質量更無法保證
代碼開發過程中加入了阿里巴巴P3C規范,與集成工作流沒有打通,不得不依賴人工介入的效果,當項目的時間緊,任務重,往往執行不到位,效果無法保證,形同虛設。代碼質量很難保證。
FTP手工發布效率慢,Jenkins需要編寫大量的腳本,降本提升效率成為了瓶頸
公司在很長一段時間內使用Jenkins作為自動化部署工具,Jenkins易用的插件化模式和靈活的流水線腳本編寫能力是我們一直使用他的原因。不過對于我們這種0運維人員的小團隊來說,一些平臺細小的不便性也會給團隊效率帶來很大的負面影響。Jenkins的流水線腳本編寫維護的繁瑣性以及第三方平臺(服務)與Jenkins整合的復雜度都給我們帶來不小的麻煩。
缺少專職運維人員和微服務改造實戰經驗,研發運維效率不高
公司未設置專職運維人員,在做業務創新同時,微服務架構同步改造進行中。采用自建微服務架構+APM,技術門檻和人力不足很難在短時間成功落地。急切需要一條快速上手的平臺支撐,需要最大限度屏蔽底層IaaS, 容器,以及常用微服務套件的學習成本。
測試開發環境和生產環境的閑置計算資源較高
長期保有固定的IaaS資源,單臺ECS單部署應用,導致資源利用率很低,存在較多的閑置浪費。
解決效果
總體上來說,掌訊信息公司在與云效&SAE共建之后,通過Codeup自動化代碼檢查提升了代碼質量,降低了生產的故障,Flow自動化流水線、SAE的接入不但降低了成本,同時提升了交付效率。
降成本
小成本投入提高質量管理能力和持續交付能力
免費使用的Codeup代碼庫讓我們節省了自建Git代碼庫的成本,Codeup中集成的代碼審查和安全審查模塊又讓我們節省了質量管理的投入成本。免費的流水線Flow讓我們節省了原本在Jenkins中投入的環境成本。這些還只是節省的有形成本,對于平臺整合后效率的提升所節省的成本更是不可估量。
低成本高質量玩轉微服務架構
對于我們這樣的小團隊想要玩轉微服務架構一直是一個可望不可即的事情,直到發現了阿里云的SAE(Serverless應用引擎)產品,SAE(Serverless應用引擎)節省了自建微服務架構的ECS成本。基于秒級彈性能力,無需長期保有固定資源,按需啟停和自動彈性、按分鐘計費,極大的提升了資源利用率。使用SAE(Serverless應用引擎)后,公司單從硬件成本上就節省了50%。
提效率
SAE(Serverless應用引擎)-- 從0到1的高效體驗
SAE(Serverless應用引擎)提供了應用托管和應用監控的開箱即用的體驗,幫助我們關注業務開發而非底層資源的運維,節省了大量的人力成本。目前,我們通過 SAE 上線了 5 個核心業務:商品中心、用戶中心、銷售中心、采購中心和庫存中心。
云效Codeup代碼庫--加速你的code review
在Codeup代碼庫中code review是在每一次commit后自動進行審查,和我們之前的集中時間,集中人力做code review工作相比,分散在commit后的自動審查模式更節約時間,并且自動化的觸發模式減少了人為參與產生誤判的可能性。
云效Flow--高易用性,高集成性
使用云效Flow產品后很多問題迎刃而解,可視化的流水線配置讓之前繁瑣的腳本編寫工作一去不復返。Flow高度集成阿里云產品線,在流水線Flow中輕松集成我們在阿里云使用的SAE環境。我們曾嘗試讓一名有3年工作經驗的普通的開發人員在Flow中構建一個Java測試應用部署的流水線,結果他在沒有查看任何文檔的情況下很快的完成了流水線的配置工作。這些體驗都讓我們切身感受到Flow產品的高易用性和高集成性。
提升質量,減少故障
以前團隊中的Code review工作只能指定專人在合并代碼后執行審查任務,并根據生成的審查報告統一對問題進行修訂,在使用云效Codeup代碼庫后,代碼審查工作被分配在每次commit后自動執行,以前統一的審核時間被分配在團隊中每個人Commit代碼后自動執行,不但減少了人員參與的人力成本而且減少了Code review工作執行的時間成本,大大提高了工作效率。由于整個Code review工作提前到了代碼Commit階段,將發現并解決代碼潛在問題的階段提前到了代碼合并之前,這樣就減少了在后續環節中出現遺漏問題的可能性,這里不得不提一下Codeup審查代碼階段包含的敏感信息和依賴包漏洞掃描功能,這兩個在Codeup中自帶的安全掃描功能,不但調高了代碼質量的安全性,而且潛移默化的提高了團隊的安全意識。
項目對比:
對比項目 | 原來 | 現在 |
代碼規范評審 | 代碼評審環節滯后,人為控制環節多。 | Commit自動化評審 |
代碼安全評審 | 缺失安全評審工作 | Commit自動化安全評審 |
發布方式 | Jenkins手工編寫流水線腳本 | 高度可視化操作--簡單 |
Jenkins通過API方式集成阿里云產品(SAE) | 高度集成阿里云產品(SAE)--便捷 | |
分布式環境建設 | 購買ECS設備構建環境 | SAE無需購買ECS,按資源使用量彈性付費 |
分布式環境運維 | 自建運維環境,集成多種運維工具 | SAE提供統一運維平臺,高度集成阿里云運維相關產品。 |
我們具體是怎么做到的呢?
第一步:云效企業級成員權限管理,做到三級安全防控
摒棄之前代碼庫、持續集成平臺(Jenkins)、質量管理平臺,多平臺多用戶的方式,統一在阿里云平臺完成用戶管理。通過如下三層權限管理做到安全防控:
企業成員角色權限管理。
Flow及Codeup角色權限管理。
Flow及Codeup成員權限管理。
第二步:逐漸完善代碼質量檢查,做到質量可控
3個階段的代碼檢查、代碼提交自動觸發。
開發階段Codeup代碼提交(commit)自動代碼檢查,測試環境部署階段流水線(Flow)添加自動代碼檢查環節,生產環境部署階段流水線(Flow)發布任務執行前添加安全檢查任務。
開發階段使用Codeup如下圖。
第三步:測試、正式二條自動化流水線實現持續交付
測試、正式環境流水線集成SAE(Serverless應用引擎)環境,無縫結合阿里云產品,如下圖。
測試環境流水線使用如下圖。
生產環境流水線使用如下圖。
結語
最后,感謝云效+SAE這兩款工具及官方團隊給予我們的支持,希望在未來更加深度的合作中,掌訊信息和云效+SAE都能為更多團隊的交付效率提供更多更好的經驗。
企業創新要做的是成長速度快于消費者需求變化的速度,所以掌訊信息深感依靠自身摸索固然也可以持續提升能力,但面臨的挑戰要求能力的提升也必須更快、更好。在尋求提升開發和交付效率,低成本試錯中,掌訊信息發現阿里經過數年互聯網研發實戰,已經總結出了一套高效能的研發思想、流程及工具,那就是阿里云效+SAE。
持續交付、降本提效是一個很大的主題,一篇文章要講透是不夠的,只是簡單分享了我們在這個過程中遇到的幾個關鍵問題。掌訊信息在實踐中其實都在摸著石頭過河。希望大家可以多交流,共同探索互聯網交付效率的成功模式。
作者介紹
喬亞浩,2009年加入石家莊掌訊信息技術有限公司,從業務開發至產品管理,現任職「掌訊企業智能服務部主管」。先后承擔多次技術攻堅及推動技術演進:前端混合開發技術落地,產品后端微服務化改造、服務自動化構建及容器化部署、云效CI/CD落地等。
本文內容非阿里云官方提供,如您發現本文檔存在侵權內容或其他問題,請提供相應證明材料并在本頁面內提交反饋信息,阿里云會協調或通知相關作者進行處理。