小而美:兩步完成從源碼到應用的極簡交付

作者:花三(王俊)

Serverless 應用引擎 SAE 是阿里云推出的一款零代碼改造、極簡易用、自適應彈性的容器化應用托管平臺,面市以來為幾萬家企業客戶提供服務,運行穩定,廣受好評。

SAE 的出現解決了眾多企業想用 K8s,但是又上手困難的問題,可以用非常低的門檻享受到 K8s 的技術紅利。尤其是 SAE 在應用的構建和發布時的順滑體驗,更是幫助中小企業用戶極大地提升了研發效能。

本文將主要介紹,如何通過 SAE 快速實現項目從源碼到應用的交付與上線。

SAE 兩步完成應用交付

在 SAE 上,從源碼到應用的交付部署,僅需要進行兩步操作:準備代碼倉庫和創建應用。 完成這兩步后,基于持續部署的能力,就可以愉快地進行應用版本的迭代了。

第一步:準備代碼倉庫

接下來,將以開源項目 excalidraw 為例進行演示,在無需修改任何代碼的前提下,在 SAE 上進行應用的快速部署。首先,需要將 excalidraw 項目的開源倉庫 fork 到您的個人倉庫,當然您可以使用其他的開源項目。

excalidraw 是 GitHub 上一款開源的手繪風格畫板項目,開源熱度很高。

GitHub 地址:https://github.com/excalidraw/excalidraw

版權許可:MIT License

第二步:創建應用并綁定源碼倉庫

創建部署應用,這里需要填寫應用名、HTTP 監聽端口、請求超時時間這幾個配置項,其他配置項采用默認值即可。

  • HTTP 監聽端口號,即在線應用對外提供 web 服務的端口號,用于 HTTP 流量全托管場景下的請求轉發,這里配置 HTTP 監聽端口為 3000(excalidraw 項目中默認使用的端口);
  • 請求超時時間,excalidraw 服務初始化啟動時,需要耗費一定的時間,因此配置為 60 秒。

圖片

綁定源碼倉庫,選定部署方式為“從源碼倉庫持續部署”,而后配置綁定具體的倉庫和分支即可。

  • 構建類型配置為“系統自動檢測并構建鏡像”——無需 Dockerfile;
  • 啟動命令,配置啟動 excalidraw 服務的命令;
cd ./excalidraw-app && vite --host
  • 配置完成后,選擇“跳過高級設置,創建應用”,觸發應用創建和應用版本的構建部署。

圖片

在這里,可以對 SAE 源碼部署的能力,有一個全局性的了解:

  • 倉庫類型,支持多種類型的 Git 源,包括 GitHub、Gitee、公網 Gitlab、Codeup;
  • 構建類型,支持基于 Dockerfile 的鏡像構建方式,同時支持系統自動檢測編譯的方式,無需提供 Dockerfile,完全由 SAE 自動檢測自動編譯,最終自動構建打包成鏡像;
  • 觸發模式,可滿足多樣的持續部署需求;
  • 鏡像倉庫,SAE 默認提供鏡像的倉庫存儲能力,不強要求開通 ACR,當然也支持推送鏡像到個人 ACR;
  • 啟動命令和工作目錄,主要為滿足個性化的構建要求,同時更多的可拓展可自定義配置的能力陸續研發中,盡請期待。

可視化流程

在應用版本的構建部署過程中,在具體的構建記錄中可以查閱所有的環節,包括各個環節的日志和耗時,全流程可觀測。構建部署成功后,會生成一個應用的新版本。此時,手動在版本列表-流量配置中,將流量全切換至新版本即可。

圖片

測試驗證

流量配置完成后,可以直接通過 SAE 默認提供的測試域名,直接訪問應用,方便進行快速驗證和調試。至此,應用上線完畢,后續可以利用 SAE 提供的持續部署能力,進行迭代。

圖片

代碼安全,源碼即資產

SAE 通過完全隔離和用完即銷毀的運行時環境,保證用戶的代碼安全。

在每一次構建的生命周期中,資源上,運行時環境之間是完全相互獨立的,網絡上,運行環境之間是完全互相隔離且安全的;Serverless 的構建環境,每一次構建都是從零拉起一個完整的構建環境,用完即毀,達到真正的一次性;源碼僅初始化環境時被拉取一次,構建完成后,隨著構建環境一起被銷毀,期間不留任何痕跡。

云端構建部署,性能與體驗

在性能方面,為了保證云端構建耗時能與本地相近,帶來最好的云端體驗。SAE 不僅對運行時環境的快速拉起做了很多優化,同時還綜合分析了每一類編程語言在編譯時的不同表現和特征,包括編譯型語言和解釋型語言,設計實現了一套多級緩存的機制,用于加速項目編譯構建時獲取外部依賴資源的速度。

  • 運行時優化 + 鏡像緩存,實現運行環境的迅速拉起,冷啟動耗時 3S 內;
  • 高頻依賴或資源直接存在運行時環境的鏡像中,可直接本地加載,進行復用;
  • 多樣化的、中等頻度的依賴或資源,以 OSS 作為緩存媒介,高速拉取,無需走外網;
  • 個性化的、低頻的依賴或資源,以鏡像作為緩存媒介,第一次拉取的時候需走外網,會存在冷拉取的現象。但是二次構建可以直接從緩存中拉取,進行資源復用,無需再走外網,實現加速。

圖片

SAE 2.0 能力升級回顧

彈性能力升級: 彈性效率優化到百毫秒級,支持縮容到 0。并提供閑置計費能力,無請求時 CPU 不計費,彈后更省。

開發者體驗升級: 零改造遷移,秒級創建應用,一鍵灰度。提供 S2A 等豐富的平臺工程能力,研發提效。

適用場景升級: 除支持開源微服務 /XXL -job、ElasticJob、Spring Task 等無縫遷移外,新增支持 Web 應用類型,從實例托管到流量托管。

圖片

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/14334.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/14334.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/14334.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python庫之lxml的簡介、安裝、使用方法詳細攻略

Python庫之lxml的簡介、安裝、使用方法詳細攻略 簡介 lxml是一個用于處理XML和HTML文檔的Python庫,它提供了簡單易用的API來解析和生成這些文檔。lxml以其性能和易用性而受到廣泛歡迎,特別適合于需要處理大量數據或需要高性能解析的場景。 安裝 安裝…

運行時異常和編譯時異常的區別

Java中的異常被分為兩大類:編譯時異常和運行時異常。 都是RuntimeException類及其子類異常,如NullPointerException、IndexOutOfBoundsException。這些異常是不檢查異常,運行時異常的特點是Java編譯器不會檢查它,程序中可以選擇捕…

純代碼如何實現WordPress搜索包含評論內容?

WordPress自帶的搜索默認情況下是不包含評論內容的,不過有些WordPress網站評論內容比較多,而且也比較有用,所以想要讓用戶在搜索時也能夠同時搜索到評論內容,那么應該怎么做呢? 網絡上很多教程都是推薦安裝SearchWP插…

RK3588 Android13 預安裝自己的apk應用及把這個應用設置為默認桌面

1、cp -rf device/rockchip/rk3588/rk3588m_s/preinstall device/rockchip/rk3588/rk3588_t/ 2、給device/rockchip/rk3588/rk3588_t/preinstall/的存放app的文件夾改名為app-imms2,在app-imms2放入app-imms2.apk,編譯安卓源碼即可, 3、編譯完會在out/…

android sp指針的cast

sp<Base> b; sp<Derived> d; b static_cast<Base*>(d.get()); 對于c原生的智能指針&#xff0c;有static_pointer_cast之類的操作方法。可以看cppreference。

Spring Web MVC介紹及詳細教程

目錄 1.什么是Spring Web MVC&#xff1f; 1.1 MVC定義 1.2 Spring MVC與MVC關系 2.為什么要學習Spring MVC 3.項目創建 4.Spring MVC連接 4.1 RequestMapping 4.2 PostMapping和GetMapping 5.Spring MVC參數獲取 5.1 獲取單個參數 5.2 獲取多個參數 5.3 獲取普通對…

通用代碼生成器應用場景一,項目前期

通用代碼生成器是一種自動化編程軟件&#xff0c;是一種先進的編譯系統。它具有表級抽象。把系統抽象為域對象&#xff0c;枚舉&#xff0c;彈性登錄模塊&#xff0c;復雜版面和圖形報表。使用通用代碼生成器完成項目前期&#xff0c;比直接使用對應的高級語言快的多&#xff0…

element Notification 消息過多需要折疊

Notification 消息過多太長 希望能折疊 如圖下效果 element-plus 可以將dom 插入到具體的元素 結合css :nth-child 來控制樣式達到效果 element dom 只能插入到body中 所以無法使用:nth-child 1.Notification需要消息提示時設置class let eleNum 0 // 彈窗的序號 function…

vue+canvas實現逐字手寫效果

在pc端進行逐字手寫的功能。用戶可以在一個 inputCanvas 上書寫單個字&#xff0c;然后在特定時間后將這個字添加到 outputCanvas 上&#xff0c;形成一個逐字的手寫效果。用戶還可以保存整幅圖像或者撤銷上一個添加的字。 <template><div class"container"…

小紅書-社區搜索部 (NLP、CV算法實習生) 一面面經

&#x1f604; 整個流程按如下問題展開&#xff0c;用時60min左右面試官人挺好&#xff0c;前半部分問問題&#xff0c;后半部分coding一道題。 各位有什么問題可以直接評論區留言&#xff0c;24小時內必回信息&#xff0c;放心~ 文章目錄 1、自我介紹2、介紹下項目&#xff…

金額計算導致的錯誤問題匯總解決

在日常的開發中&#xff0c;前端計算金額是非常常見&#xff0c;如果不夠仔細&#xff0c;考慮不夠周全的話&#xff0c;很容易犯錯的&#xff0c;金額這個東西一但錯了是很嚴重的&#xff0c;因此總結一些常見的錯誤&#xff1a; 1.最重要的&#xff0c;涉及到計算的參數一定要…

關于做事方式的小討論

大家好&#xff0c;我是阿趙。 ??之前五一勞動節期間&#xff0c;看到了這么一個新聞&#xff1a;某動物園內部收費項目五一期間漲價&#xff0c;喂長頸鹿的樹葉&#xff0c;一枝需要30元。然后新聞下面的評論就炸鍋了&#xff0c;紛紛的指責動物園太黑心&#xff0c;一枝樹葉…

淄博公司商標駁回復審條件及流程

商標是人工審查的&#xff0c;所以不同的人會有不同的想法和意見&#xff0c;導致同一案件的審查結果不同。特別是商標審查周期縮短到5個月&#xff0c;全國平均每個工作日有1萬多個商標提交申請&#xff0c;而全國只有一個商標審查單位——國家商標局提交申請。這種情況下&…

從入門到精通:掌握Scrapy框架的關鍵技巧

在當今信息爆炸的時代&#xff0c;獲取并利用網絡數據成為了許多行業的核心競爭力之一。而作為一名數據分析師、網絡研究者或者是信息工作者&#xff0c;要想獲取網絡上的大量數據&#xff0c;離不開網絡爬蟲工具的幫助。而Scrapy框架作為Python語言中最為強大的網絡爬蟲框架之…

ubuntu當前登錄用戶IP驗證

設置一個白名單列表檢查到登錄用戶IP信息不在白名單&#xff0c;發送信息到指定郵箱 #!/bin/bash# 定義常用IP地址列表文件 KNOWN_IP_FILE"/path/to/known_ips.txt" # 替換為實際路徑# 定義郵件接收者 EMAIL_TO"test163.com"# 定義日志文件 LOG_FILE&quo…

2024-5-23

今日安排&#xff1a; 繼續審計 nf_tables 源碼 && iptables 相關學習?????復現 CTF 相關題目????mount 的使用&#xff0c;學習 namespace (昨昨昨昨昨昨昨昨昨昨昨昨昨天殘留的任務)&#xff08;&#xff1a;看我能擱到什么時候???靜不下心學習新知識就…

qmt量化交易策略小白學習筆記第11期【qmt編程之獲取股票訂單流數據--原生Python】

qmt編程之獲取股票訂單流數據 qmt更加詳細的教程方法&#xff0c;會持續慢慢梳理。 也可找尋博主的歷史文章&#xff0c;搜索關鍵詞查看解決方案 &#xff01; 感謝關注&#xff0c;需免費開通量化回測與咨詢實盤權限&#xff0c;可以和博主聯系&#xff01; 獲取股票訂單流…

Java版工程行業管理系統-提升工程項目的綜合管理能力

工程項目管理涉及眾多環節和角色&#xff0c;如何實現高效協同和信息共享是關鍵。本文將介紹一個采用先進技術框架的Java版工程項目管理系統&#xff0c;該系統支持前后端分離&#xff0c;功能全面&#xff0c;可滿足不同角色的需求。從項目進度圖表到施工地圖&#xff0c;再到…

Java泛型類和方法聲明

泛型方法 protected <E> TableDataInfo<E> getDataTable(List<E> list){TableDataInfo<E> rspData new TableDataInfo();rspData.setCode(HttpStatus.SUCCESS);rspData.setMsg("查詢成功");rspData.setRows(list);rspData.setTotal(new Pag…

C++_vector操作使用

文章目錄 &#x1f680;1.1 vector介紹&#x1f680;1.2 vector的初始化&#x1f680;1.3 vector的常用內置函數&#x1f680;1.4 vector的遍歷 &#x1f680;1.1 vector介紹 vector是表示可變大小數組的序列容器。就像數組一樣&#xff0c;vector也采用的連續存儲空間來存儲元…