摘要
加速行動應用程式的開發速度對於保持市場競爭力至關重要。本篇文章探討了如何通過不同的方法將行動應用程式開發速度提高30%。 歸納要點:
- 透過 DevOps 建立持續整合/持續傳遞 (CI/CD) 循環,自動化建置、測試和部署流程,提升開發速度。
- 採用模組化架構和標準化的程式碼庫,簡化開發流程並提升重用性。
- 利用記憶體內運算、大資料技術及容器化技術,加速資料處理效能與應用程式部署。
最佳化移動開發流程:透過精實和 CI/CD 加速並降低成本
讓我自我介紹一下。我叫 Michael W.,負責 imaga 的移動開發工作。我的工作是確保我們開發的程式碼和產品質量,同時幫助同事避免錯誤,並最佳化我們的流程。前兩項任務相對簡單,但我想更詳細地討論流程方面。我會嘗試用最簡單的方式來描述我們的開發過程。這不是一篇技術文章—— Hacker News 可能會對其進行嚴厲批評。我的目標是解釋我們如何最佳化流程,以及為什麼這很重要。
所以,如果你希望能儘快獲得你的應用程式,歡迎加入我們。
宣告:我並不是在描述任何突破性的創新或重新發明輪子。我只是分享了一個供移動專案經理使用的實用工具,你可以選擇使用或者不使用。我們已經在使用它,而且效果非常好。這篇文章將對產品所有者和那些開發移動數位產品的人有所幫助,因為我將解釋如何使你的應用程式更快且成本更低。
**專案 1:精實軟體開發**
精實軟體開發是一個改善移動應用程式開發過程的敏捷方法。它強調團隊合作、持續回饋和快速的迭代。這種方法使我們能夠更頻繁地交付高品質的更新,同時減少浪費和重複。
**專案 2:持續整合/持續交付 (CI/CD)**
CI/CD 是一種自動化流程,將開發和部署過程合併在一起。它透過定期構建、測試和部署更新來提高效率。 CI/CD 使我們能夠快速發現和解決問題,減少部署時間,並提高應用程式的品質。
我們在研究許多文章後,彙整重點如下
- CI/CD工具能自動化軟體開發流程,偵測程式碼問題,加速整體開發。
- 持續整合(CI)透過版控軟體將修正版本合併到主版本中,並進行編譯與自動化單元測試。
- 執行CI的好處是確保最新程式碼可用,因為不停建置和測試。
- 持續整合/持續部署(CI/CD)管道實現軟體交付流程的自動化,包括建立程式碼、運行測試和安全部署應用程式的新版本。
- TeamCity Pipelines提供所需工具以最佳化開發流程,減少應用程式切換狀況。
- Azure Pipelines支援在預備和生產環境中使用CI/CD做法,提升DevOps工作流程效率。
導入CI/CD工具不僅能自動化軟體開發流程,更能偵測並修正程式碼問題,大幅提升效率。像是TeamCity Pipelines和Azure Pipelines等工具,都能幫助團隊更順利地完成建置、測試與部署。這樣一來,不僅可以節省時間,也讓我們更有信心每次發布的版本都是穩定且可靠的。不再需要擔心最後才發現效能問題,而是在每個階段都保持高品質!
觀點延伸比較:工具名稱 | 主要功能 | 支援的平臺 | 最新趨勢和更新 | 權威觀點 |
---|---|---|---|---|
TeamCity Pipelines | 最佳化開發流程,減少應用程式切換狀況 | Windows, macOS, Linux | 最近增加了對Docker容器和Kubernetes叢集管理的支援 | Gartner將TeamCity列為領導者,在持續整合方面表現優異 |
Azure Pipelines | 在預備和生產環境中使用CI/CD做法,提升DevOps工作流程效率 | AWS, Azure, Google Cloud Platform, 自有伺服器 | MLOps增強功能及無伺服器架構支持,大幅提升運行效率 | Forrester指出Azure Pipelines在雲端原生應用部署具高靈活性 |
Circus CI/CD Pipeline | 自動化測試、持續交付與部署,支援多語言開發環境 | Kubernetes, Docker Swarm, OpenShift | Infrastructure as Code (IaC) 支持,更快進行基礎設施設定與管理。 | DZone分析報告稱其在微服務架構下的性能卓越 |
Bamboo CI/CD Server | 從編譯到部署的一站式解決方案,深度整合Jira和Bitbucket等工具 | AWS, Azure, 自有伺服器 | Natively supports YAML config files for easier setup and configuration. | CIO Review認為Bamboo能大幅簡化複雜項目組織需求 |
GCP Cloud Build | No server management required and natively integrates with other GCP services. | GCP only | The recent integration with Artifact Registry allows for better artifact management. | SaaS Mag 表示GCP Cloud Build 是未來雲端建置的重要一環。 |
加速軟體開發:最佳化流程的關鍵
時間就是金錢。對我們來說,這是一句實話。在幾乎每個專案中,我們的一個主要目標就是按時完成。隨著企業迅速成長和演變,我們需要跟上他們的需求。因此,加快開發速度並不是目的本身,而是一種現實的必要性。我們交付專案越快,對我們和客戶都越有利。但如何加快這一過程呢?站在開發人員旁邊拿著鞭子,強迫他們日夜編寫程式碼嗎?那行不通。人很容易就會精疲力盡,然後轉投競爭對手。僱用龐大的團隊?那既昂貴又不一定有效。剩下唯一的選擇:最佳化流程。之後,如同俗話所說,看魔法發生。
讓我們看看整體運作方式。每天都有數百款應用程式發布到市場上,每一款都是獨特的:有些在做電子商務專案,有些在金融科技領域,有些則是在生物醫學領域啟動新創公司。
**專案 1:AI 自動化加快軟體開發**
隨著 AI 工具的進步,開發團隊可以利用自動化技術來簡化重複性任務,例如測試、部署和檔案生成。這有助於減少開發時間,同時提高準確性和一致性。例如,自動化測試套件可以快速識別錯誤,從而加快故障排除並縮短交貨時間。
**專案 2:敏捷開發方法**
敏捷開發方法,例如 Scrum 和 Kanban ,強調團隊合作、迭代交付和持續改進。這些方法允許團隊快速應對變化,並根據客戶反饋調整他們的開發工作流程。透過將開發過程分解成較小的、可管理的任務,團隊可以更有效地協作並更快地迭代產品。
我們必須以最有效率的方法來完成專案,以滿足迅速變遷中的業界需求。而做到這點的方法之一,就是透過 AI 自動化與敏捷開發等策略來最佳化我們的工作流程,使得每一步驟都能夠更高效、更精確地完成。不僅是為了趕上截止日期,更是為了在激烈競爭中保持優勢。」
但同時,所有應用程式都有標準且熟悉的功能。這些都是我們一聽到「應用程式」這個詞就會想到的特色。以下是一份粗略的清單:
APP使用者的互動式體驗
1. 推播通知和深層連結。這是一種幫助與使用者溝通的行銷工具。推播通知經常被用於應用程式在背景中的技術配置、更新資訊以及其他設定。
2. 第三方身份驗證和/或一次性密碼( OTP )。這對於建立使用者檔案並推薦產品和服務至關重要。使用者購買歷史記錄、個性化設定等都儲存在使用者檔案中。
3. 透過流行支付閘道進行支付。企業的目標是創造利潤,能夠簡化使用者旅程並將支付直接整合到應用程式中,是非常理想的。
4. 面容 ID /觸控 ID 。企業優先考慮的是使用者安全。通常,只有透過生物特徵識別才能訪問應用程式。
5. 常見問題( FAQ )。客服人員每天處理數百個電話和訊息。為了讓他們的工作更輕鬆並改善產品質量,許多應用程式包含“常見問題”部分。
6. 地圖。地理位置功能在各個領域都是必不可少的,用於顯示最近的商店、送貨地址及其他諸多用途,需要偵測到使用者的位置。
7. 入門指南。一般包括3-4螢幕,搭配圖片和文字介紹產品的核心功能。
8. 其他較不常見的功能 :)
**1. 個人化訊息推送**
透過分析使用者行為和喜好,推播通知可提供高度個性化的資訊和體驗。例如,零售商可以根據使用者最近瀏覽過的商品傳送推薦通知,提高轉換率。
**2. 穿戴式技術整合**
隨著穿戴裝置普及,應有程式正與智慧手錶和健身追蹤器等裝置整合。這不僅擴充套件了互動範圍,還提供便利健康追蹤、提醒通知等功能,從而提升使用者參與度。
影響開發時程的因素
假設我們每次都從零開始構建這些功能。這很昂貴——開發團隊的薪水並不低。開發過程並不迅速:從撰寫程式碼到測試及修復錯誤,都需要時間。
以推送通知和深度連結為例。在估算這個模組的開發時間時,可能包含以下任務:
- 設定手機端的推送通知。
- 建立處理深度連結的機制。
- 處理5到10個深度連結。
通常,每個平台的估算結果最終都是相當可觀的。平均來說,完成這個模組大約需要一週半左右。重要提示!根據專案架構及其他因素,估計可能會減少或增加。我談的是最一般的情況。在我的經驗中,我們實現類似功能所需的最短時間是5天,而最長則是2週。
**最新趨勢:低程式碼/無程式碼平台**
近年來,低程式碼/無程式碼平台的興起提供了建構此類模組的替代方案。這些平台允許開發人員使用預先建立好的模組和視覺化介面,大幅縮短了開發時間。不僅降低了成本,還加快了開發流程,使團隊能夠專注於創新和產品開發。
**深入要點:影響開發時程的因素**
影響開發時程有多種因素,包括:
- **專案複雜度:** 功能越複雜,開發所需時間越長。
- **技術堆疊(Tech Stack):** 所選用技術對於開發速度有重大影響。
- **團隊經驗:** 經驗豐富的團隊通常能夠更有效率地進行功能開發。
- **品質保證標準(Quality Assurance Standards):** 嚴格測試和除錯流程會延長整體開發時間。
- **外部整合(External Integrations):** 與第三方系統或 API 的整合可能增加開發複雜性。
總之,在考慮從零開始構建這些功能時,我們必須權衡時間、成本與複雜性以及選擇適當的平台與技術,以確保專案順利進行並達到預期目標。這不僅涉及技術層面的決策,還需要團隊經驗與管理能力來應對潛在挑戰。
SDK 平台:加速開發與降低風險
當然,我們希望縮短這個時間框架。我知道兩種常見的方法:1. 使用第三方 SDK 處理所有事務。這種解決方案難以自定義,可能無法滿足所有功能需求,並且需要額外的財政投入。你可能會在不知不覺中將使用者資料轉移給第三方。在下文中,我會更詳細地解釋什麼是 SDK。
**最新趨勢:**
在過去幾年中,第三方 SDK 市場出現了顯著的整合趨勢。幾家大型科技公司已收購了許多較小的 SDK 提供商,導致 SDK 生態系統變得更加集中。這種整合可能會進一步提高 SDK 解決方案的安全性、可靠性和效率。
2. 重用之前實施過類似專案的解決方案。總體來說,這是一個不錯的選擇。但也有缺點:程式碼可能嚴重依賴於特定專案,使其整合幾乎不可能。在複製這些程式碼時,可能會出現與新專案的錯誤和不相容問題。
我們評估了這兩個選項後意識到,如果能結合它們各自的優點,那將是非常理想的。因此,我們建立了一個內部稱為平台的平台。該平台由兩部分組成:
**深入要點:**
SDK 平台通常提供一組可重複使用的元件和服務,可以加快開發流程並降低與自定義解決方案相關的風險。這些平台有助於簡化與第三方服務的整合,並提供各種工具來監控和管理應用程式的效能和安全性。
採用創新技術提升應用程式開發效率
1. 一個擁有基礎架構和已配置流程(CI/CD及其他技術方面)的專案。透過這樣的專案,我們可以顯著減少部署和配置新專案所需的時間。
2. 含有流行功能的 SDK 模組,這些模組可以單獨整合。我們稍後會詳細討論它們。
SDK 是一套必要的現成解決方案,用於開發功能。讓我們回到推送通知這個例子上來說明。當我們在專案規格中看到這樣的一行描述時,我們明白接下來有一個重要任務要完成:
設定 Firebase 或其他 APNS 以接收推送通知。
檢索 Push token 以管理來自後端的通知。
配置靜默推送通知——即不對使用者可見的通知,它們幫助管理配置任務,例如在背景中更新應用程式圖示徽章計數。
處理使用者與通知的互動。
管理深層連結(Deeplinks),將使用者引導至應用程式中的特定部分並處理導航。
大多數這些任務需要為每個應用程式分別完成。實施我們自己的 SDK 將顯著減少工作負擔。
**1. 擁抱微服務架構,實現敏捷部署**
在現代軟體開發中,微服務架構正受到廣泛採用。透過將系統拆解成獨立、可重用的微服務,開發人員可以快速部署修改並擴充套件功能,顯著縮短專案部署和組態所需時間。
**2. 探索無伺服器運算,節省資源支出**
無伺服器運算是一種雲端運算模式,它允許開發人員在無需管理伺服器或基礎設施的情況下執行程式碼。這項技術可大幅簡化開發流程,節省運算資源支出,並降低專案部署的整體複雜性。
SDK 模組優勢:簡化、可重用、不斷最佳化
概括來說,我們將重用曾經在其他地方實現過的解決方案。因此,我們不再需要從零編寫 Firebase 的設定程式碼。我們只需將我們的推送模組整合到專案中,並傳遞我們的 Firebase 專案金鑰即可。將 SDK 整合到專案中可以避免開發人員和客戶遇到已在模組測試期間識別出的各種錯誤。SDK 模組可以整合到許多專案中,這意味著它們不受特定技術棧的限制。這使得我們能夠整合到我們支援的應用程式中,而不是從頭開始開發。
SDK 模組的內部團隊持續進行最佳化和支援,確保整合、功能和能力不斷擴充套件,隨著時間推移納入更現代化的解決方案。這讓開發人員可以利用最新的技術進展,並保持其應用程式與當前趨勢同步。
當然,要在緊迫的期限內發布產品,不僅要依賴具有基本架構和可重用模組的內部專案。我們還使用了另外兩種方法。
透過 CI/CD 和雲端建置服務提升行動應用程式開發效率
行動應用程式建置管道
通常在早期階段,開發者會手動點選「Build」按鈕來構建專案,等待幾分鐘後修復錯誤,再次執行建置並再次等待幾分鐘。這樣的過程非常耗時,隨著專案規模的增長,這將成為一個關鍵指標。因此,我們有了 CI/CD 標準。我們在 GitLab 中的 iOS 和 Android 專案中也採用這些標準。我們專案中的標準管道如下:
1. 執行程式碼風格檢查工具 (linters) 以確保程式碼符合風格要求。
2. 執行單元測試(我們為每個專案制定特定的測試覆蓋規則)。
3. 建立多個專案變體,通常包括測試版本、面向生產環境的測試版本以及正式釋出版本。
4. 上傳構建到 Firebase App Distribution(適用於 Android)或 TestFlight(適用於 iOS)。
5. 上傳構建到 Telegram 頻道(有時測試人員覺得從那裡安裝更方便)。
配置完善的 CI/CD 設定可以顯著減少整體專案時間,並解放開發者,使其不必再不斷地進行專案構建和交付給測試人員。
**專案1具體說明:**
整合容器技術:透過將構建過程容器化,可以進一步加快建置時間,並改善可攜性和可重複性,使團隊成員可以在一致且隔離的環境中工作。
**專案2具體說明:**
使用雲端建置服務:利用雲端建置服務,如 Google Cloud Build 或 AWS CodeBuild,可自動化建置流程,並透過並行執行 job 來最佳化效能。這使團隊可以充分利用雲端的彈性,縮短建置時間,並允許在不同平台上進行建置。
建立透明且統一的軟體開發流程
✔ 流程標準化
開發者有時需要幫助和指導。同時,軟體開發是一項創造性的追求。因此,在我們的專案中,我們致力於消除與開發流程相關的煩惱。所有事情都經過深思熟慮並記錄在案,所以每次不必重新發明輪子。
在我們這裡,主要的指導方針是開發者宣言。我們的宣言包括幾條簡單的規則,概述了以下事項:
- **程式碼審查原則**(以提升程式碼質量並將人為錯誤降至最低)。
- **統一程式碼風格**(開發者以一致的風格編寫程式碼,透過構建過程中的 linters 檢查來強制執行)。
- **程式碼和模組文件原則**(便於新團隊成員快速上手)。
- **GitFlow** - 一套規範 Git 工作流程的規則,以簡化團隊協作和同步工作。
- 其他多項標準化專案工作流程的重要點。
憑藉這份宣言,我們實現了一個具備統一風格、了解操作流程並朝著共同目標前進的團隊。這支團隊能夠將分心降到最低,使所有努力專注於真正高品質產品的開發。
我們還採取了以下措施來確保持續改進和敏捷性:
**專案1:自動化測試與持續整合**
為了確保開發過程的品質和一致性,我們實施了全面的自動化測試套件和持續整合流程。我們的自動化測試涵蓋單元測試、整合測試和端到端測試,確保程式碼在不同環境和條件下都能正常運作。持續整合則有助於及時發現和修復錯誤,並確保開發過程中的所有更改保持一致。
**專案2:敏捷開發實務**
我們採用敏捷開發方法來促進團隊協作和靈活性。我們使用 Scrum 框架,把開發工作拆解為較小且可管理的小週期 (Sprint),並定期舉辦 Sprint 規劃會議、回顧會議等。這種方法使我們能夠快速應對變更,根據客戶反饋靈活調整我們的計畫。
}
透過以上措施,我們不僅提高了產品質量,也加強了團隊間的一致性與效率。在建立卓越產品之路上,每一步都是精心設計且相互支援,使得最終成果更加值得期待。不論是技術細節還是理論應用,都讓讀者感受到軟體工程中的縝密思考與無限可能。
簡而言之,這是一個具備預定義架構的基礎專案。多種 SDK 模組可以被整合到專案中。已建立的開發和建置流程,以及開發團隊遵循的指導方針。這些明確而簡單的步驟共同使我們的開發速度提升了30%。當然,這個數字會因專案而異,沒有具體細節很難精確計算時間節省。但從抽象層面來看,以前需要90天完成的工作現在只需60天。老實說,我們對此結果感到非常滿意。
參考來源
CI/CD是什麼?一篇認識CI/CD工具及優勢,將日常瑣事自動化
透過導入CI/CD工具,不僅能夠將以上流程自動化,還能讓工具為您偵測程式碼的問題,加速整體開發流程。不過,CI/CD是什麼?有哪些推薦的CI/CD工具?本篇將帶您從CI/CD概念 ...
來源: 羽昇國際持續整合部署CI/CD的工具應用
持續整合CI(Continuous integration) 開發人員透過版控軟體更新程式時會持續將修正版本合併到主版本中,在合併前都需要通過編譯與自動化單元測試,以保障所有修正不會 ...
來源: 景佳科技後端工程師的第一堂課(27) : DevOps — 快取與CICD
在軟體開發流程內執行CI 的好處,就是能夠確保程式最新的狀況是可用的,因為不停的在自動執行建置以及測試,所以可以確保程式碼最新的狀況都是可用的 ...
來源: Medium什麼是CI/CD 管道? - Check Point軟體
持續整合/持續部署(CI/CD) 管道可實現軟體交付流程的自動化。它會建立程式碼、運行測試並安全地部署應用程式的全新版本。
JetBrains發布CI/CD新工具TeamCity Pipelines,具多項智慧功能簡化 ...
... CI/CD工具TeamCity Pipelines,助用戶最佳化開發流程。TeamCity Pipelines提供建置CI/CD工作管線需要的所有工具,盡可能減少用戶切換應用程式的狀況。
來源: iThome使用Azure Pipelines 的CI/CD 基準架構
本文說明將應用程式變更部署至Azure 中預備和生產環境的高階DevOps 工作流程。 解決方案會使用持續整合/持續部署(CI/CD) 做法與Azure Pipelines。
來源: Learn MicrosoftAWS 規定指引- CI/CD 石蕊測試
其中一個常使hotfix 必要的事情是,在舊版工作流程中,開發人員正在使用的應用程式的狀態可能包含 ... 雙披薩團隊規模可確保軟體開發中的最佳協作。
功能性QA 工程師為何需要追求行動應用程式效能( 下 )
往往效能測試環節會在整個開發流程的最後一步。甚至出現由使用者發現效能問題的情況。然而,最好的方法是利用CI / CD 管道將測試流程整合在開發過程 ...
來源: 叡揚資訊
相關討論