多快好省的做個app開發

來源:互聯網
上載者:User

標籤:

從技術經理的角度算一算,如何可以多快好省的做個app

【導讀】前端時間,一篇“從產品經理的角度算一算,做個app需要多少錢”的文章在網上瘋傳,可見大家對互連網創業的熱情!這次,從一名技術經理的角度再給大家分析一下,如何使用跨平台開發技術為你節省上百萬的開發成本。所謂“跨平台”開發技術,就是使用一種語言和一種開發工具同時支援幾種不同的手機/平板裝置,這樣做不僅僅省錢而且開發效率高,可以讓你更快的推出新版本和新功能!

作為一名軟體工程顧問,我曾參與過很多的項目,主要為軟體團隊進行開發工具和方法論方面的諮詢/培訓/指導,我接觸過不下100個各種類型/大小的Team Dev,有傳統行業,有互連網,有不差錢的,也有剛起步的創業者;其中也不乏app開發項目。Team Dev遇到的問題最大共性是每個人在一個團隊中的位置很大程度上決定他的判斷,簡而言之:視野問題!而當大家問一名IT人士那個經典的“做個app要多少錢?”的問題時,他也僅僅能根據自己的技術背景和經驗給你一個答案,更加傾向於推薦那些相對穩妥的方案;而不懂技術的人更加無從判斷。我想說的是:雖然互連網創業是個技術活,但技術選型一定要業務先行,ROI(投入產出比)優先。這就是為什麼你首先應該從成本角度進行分析,做出判斷;而不要受制於技術!

在回答完那個經典的“做個APP多少錢?”的問題後,下面這些問題就會接踵而來:

  • 應該開發iPhone版本還是Andrioid版本?
  • 可能需要聘用掌握了不同開發語言(iPhone使用Xcode/Object-C,而Android使用Android SDK和Java)和技能的團隊成員,研發成本幾乎翻倍
  • 產品的後台系統使用怎樣的開發環境?
  • 如何在新功能上線時保證iPhone/Android的APP與後台系統的同步?
  • 從無到有開發這樣一款APP到底需要多少成本?
  • 如何瞭解使用者的使用習慣,並通過資料分析來指導後續版本的開發?

對於當前所流行的“互連網+”的眾多創業者來說,如何能夠以最快的速度和最小的成本來開發/運營自己的產品是決定是否能夠在早期快速取得客戶,擷取生存空間和贏得未來機會的決定性因素。其實對於任何的軟體開發來說,多快好省永遠是我們的追求,當前的創業大潮使得這一原則更加凸顯,也讓更多的人瞭解到了軟體開發。

DevOps(研發營運一體化)也是最近幾年在軟體行業非常流行的做法,DevOps通過打通開發和營運這兩個原本屬於不同領域的團隊來為我們運營產品提供更快的價值輸出,其實也是多快好省地體現。從使用者的角度,使用手機/平板等行動裝置的使用者已經超過了PC使用者,而在行動裝置領域又存在著iPhone/Android/Windows三分天下的狀況,這使得上面所提到的快速推出產品變得更加困難,同時由於不同的裝置所使用的作業系統,開發環境和運行環境都完全不一致,讓我們的研發管理變得更加的複雜,實現DevOps也是難上加難。

本篇部落格將使用MyShuttle.biz這個應用來為你展示一個“互連網+”時代的創業團隊如何使用跨平台開發技術來多快好省地解決以上問題。

在2014年的 Visual Studio and Azure Connect() 線上發布會上,微軟使用了一套名為 MyShuttle.biz的範例程式來展示Visual Studio 2015和Microsoft Azure所提供的DevOps能力,這套範例的原始碼也被分享出來。其中使用了眾多的技術來全面展示微軟開發工具和雲端運算平台所提供的跨平台開發和DevOps能力。
全套範例代碼可以通過以下地址下載:
https://code.msdn.microsoft.com/windowsapps/MyShuttle-demo-applications-1a4b68fe#content

跨平台移動開發白皮書 – MyShuttle.biz案例分析

這本白皮書將對當前2大主流跨平台開發技術進行詳細的介紹,我將藉助MyShuttle.biz這個案例,為你展示如何使用跨平台開發技術結合雲端運算完成一個典型“互連網+”產品的技術布局,團隊組織,開發環境配置和開發流程管理,最終實現雲端式的開發營運一體化(DevOps)環境。由於內容較多,我將按照以下順序逐步發布;本系列的前一部分不會涉及過多的技術內容,適合創業者,技術管理者和普通福士閱讀;後半部分會涉及較多深入的技術細節,適合對DevOps和跨平台移動開發技術本身感興趣的朋友閱讀。

  1. 案例背景:MyShuttle.biz的業務模型,應用架構
  2. 跨平台開發技術如何做到多快好省的?
  3. 跨平台開發技術的成熟度等級和不同方案優劣比較
  4. 跨平台開發環境配置和能力分析
    1. Apache Cordvoa HTML/JavaScript Hybrid APP 跨平台技術
    2. Xamarin 原生APP跨平台技術
    3. ASP.NET 5 跨平台開發技術
  5. 雲端式端的DevOps環境配置和能力分析
案例背景

MyShuttle.biz是一套類似“滴滴出行”的互連網租車應用,可以為企業使用者提供叫車,計費和後台管理能力,解決企業使用者日常用車需求。雖然“滴滴出行”解決了普通民眾的出行需求,但是企業用車市場仍然是空白。作為在公司中工作的人來說,有客戶到訪,公司團建,出遊,甚至日常的跑業務,稅務等活動都需要用車,而企業養車則是非常大的開銷;MyShuttle.bizs就是在這樣的大背景下誕生的,希望能夠將租車公司的空閑車輛與企業使用者相銜接,實現社會交通資源的最佳化和企業用車成本的降低。

大家可以通過以下視頻來瞭解這個應用:

應用架構

MyShuttle.biz使用3套相互獨立的系統來實現以上營運目標,後台系統通過雲端運算提供資料存放區,商務邏輯處理和後台管理功能,並通過網頁應用/Windows APP的形式提供給租車公司/使用者企業的管理員使用;使用者APP通過各大應用市場給使用者免費下載和使用,使用者可以使用APP完成叫車,付費和訂單管理功能;司機APP則提供給司機使用,完成叫車資訊的推送,接受訂單,跟蹤裡程等操作。

後台系統除了可以由使用者通過瀏覽器完成各種操作外,還提供了流行的Restful介面供APP和其他第三方系統整合使用。

後台系統

  • 使用SQL Azure 提供安全的高可用資料存放區服務
  • 使用ASP.NET 5 WebAPI和Azure Mobile Service 所提供的WebAPI提供資料訪問服務
  • 為租車公司提供基於瀏覽器的SPA應用(單頁面應用)來進行車輛,司機和訂單管理服務
  • 為用車企業管理員提供基於Windows APP的案頭應用來管理員工,車輛訂單

使用者APP

  • 使用Xamarin跨平台開發工具提供原生的App體驗,同時支援iPhone/Android/Windows Phone三大移動平台

司機APP

  • 使用Apache Cordova跨平台開發工具提供基於HTML/Js的Hybrid App體驗,同時支援iPhone/Android/Windows Phone三大移動平台

 

“跨平台”技術如何做到多快好省?

由於使用了跨平台開發技術,我們不必聘用同時具備Object-C/Java/C#能力的開發人員,只需要熟練使用C#語言和Visual Studio IDE的開發人員即可,我們的團隊組成可以規劃為:

– Team 1: 2名後台開發人員:
○ 熟練使用C#開發語言,ASP.NET MVC
○ 對Microsoft Azure雲端運算平台有所瞭解
○ 瞭解Restful介面開發
○ 負責後台系統中的資料庫,WebAPI開發

– Team 2: 2名HTML/Javascript/Web/APP開發人員:
○ 熟練使用C#/HTML/JavaScript/CSS開發語言,前端架構如Jquery, AngularJS
○ 對Microsoft Azure雲端運算平台有所瞭解
○ 瞭解Restful介面開發
○ 負責Web SPA App及Apache Cordova Hybrid APP的開發(司機APP),同時支援iPhone/Android/Windows Phone移動平台

– Team 3: 2名原生APP開發人員
○ 熟練使用C#和Xamarin
○ 瞭解Restful介面開發
○ 負責原生APP開發(使用者APP),同時支援iPhone/Android/Windows Phone移動平台

– Team 4: 1名設計人員
○ 熟悉移動APP和Web應用使用者體驗設計
○ 可以獨立完成平面原型和元素切圖,熟悉應用開發過程,具備與開發人員合作的經驗

– 1名產品經理
○ 熟悉互連網產品和移動APP運營
○ 熟悉互連網產品開發,具備與研發團隊合作經驗
○ 可以獨立完成使用者故事的編寫
○ 熟悉敏捷開發過程,熟練使用backlog來進行產品規劃
○ 良好的溝通能力

– 1名技術經理
○ 熟練使用C#/ASP.NET MVC/HTML/JavaScript/CSS等開發語言
○ 熟悉主流前端開發架構和Restful介面
○ 熟悉Microsoft Azure雲端運算平台
○ 熟悉互連網開發,具備管理研發團隊經驗
○ 熟悉敏捷開發過程,數量使用backlog,sprint,burndown,kanban等工具來進行產品開發過程管理
○ 良好的溝通能力

當然,根據應用的複雜度和業務量的不同,我們也可以對以上團隊結構進行簡化或擴充;如果我們資源有限,可以按照以下思路簡化團隊

  • 將Team 1和Team 2合并,節省2名開發人員;因為大家都使用C#語言,MVC架構和REST介面的實現與前台開發關係緊密,這樣做不僅僅可以節約成本,還可以提高開發效率,節約團隊間的溝通成本;當前,前提是工作量和進度的要求可以滿足。
  • 在Team 1/2合并的基礎上,我們還可以考慮只使用一種跨平台技術(Apache Cordova或者Xamarin),這個案例中,為了能夠展示不同跨平台技術的優劣而同時使用了2種技術;而在真實的項目中,我們完全可以只使用一種;這樣,我們還可以考慮砍掉team 3,而由Team 1/2完成所有工作,這也是使用HTML/javascript作為統一的前端語言以及Apache Cordova提供的最大優勢;讓我們可以使用最少的團隊實現最多的移動平台覆蓋;當然,如果使用者對於介面體驗要求較高,使用Xamarin原生跨平台方案還是有其優勢的。

隨著業務的推進,我們也許需要擴充團隊,使用跨平台開發技術前提下,無論簡化或者擴充團隊,我們的團隊永遠會和業務對齊,不會有多條業務線使用同一個技術團隊的情況出現。在傳統的開發模式下,如果你沒有足夠的資源給每個業務線(司機/租客等)配備獨立的技術團隊,而按照技術平台(iPhone/Android)來組建團隊架構的話,就會出現不同的業務線需要同一個技術團隊做不同的事情,這時候必然會造成資源衝突,造成內耗。而使用跨平台開發技術就很好的避免了這個問題,因為我們不必因為技術不同而割裂本應該跟隨業務的團隊結構。大型軟體研發團隊的管理中的首要原則就是團隊應該和業務對齊,而不要受技術選型的影響;這樣做的目的是為了我們可以根據業務線的需求,最小化外界因素對交付的影響,做到按照業務功能持續傳遞;而多條業務線使用同一個技術團隊,不僅僅開發人員無所適從,也會大幅增加溝通成本,造成品質問題。

最後,對於團隊建設和能力成長,採用跨平台技術的團隊使用同樣的語言,工具,開發環境;這使得團隊成員的溝通變得容易,大家可以一起交流技術,互相協助對方完成工作,這樣更加有利於我們建立健康的團隊氛圍,培養大家互相協作的氣氛。

按照以上團隊能力,下表中我們看到研發成本的計算:

(以下開發人員工資的資料擷取自CSDN的2013年開發人員薪資調查,根據這份調查的資料我大致估算了各個類別程式員的薪資中上位水平,同時乘以1.4的係數以考慮社保等因素來計算總體月成本。調查原文:http://www.csdn.net/article/2014-03-26/2818997/1 )

需要特別提一句,這裡的團隊配置中我們對每個技術崗位的職位都配置了2個開發人員,同時不同技術崗位因為所使用的技術非常相似,都具備互換性。崗位的互換性對於我們避免員工生病/請假/離職所帶來的影響非常重要!而且我這裡的平均工資達到了18000元/月,比產品經理的那個計算方式更高!這意味著你可以聘用更高水平的開發人員。

按照以上我們也可以推算出前3年的開發成本:

如果按照以上計算,單單使用跨平台移動開發技術,就可以在第一年為你節省將超過60萬元的研發成本,隨著團隊的擴大(因為APP團隊占研發成本的大部分),節省的比例和金額會變得更加驚人!請大家注意,在“產品經理”的計算中,他所使用的“第一版”成本是按照6個月計算的,大致100萬的研發成本,和我這裡的“傳統”計算方式基本一致,而實用“跨平台”技術的“第一版”成本比“產品經理”的計算方式低20萬元!

在現實中,我遇到的朋友很多都問我怎樣多快好省地開發一款app,我常常告訴他們應該用跨平台技術;但最後的結果他們還是會選擇傳統的各平台獨立開發的方式,希望以上的分析能夠協助這些朋友可以對“跨平台”技術的成本優勢有所瞭解。當然,你心裡關於這些技術的其他疑問,比如他們和傳統原生app有哪些不同,各種不同的跨平台技術間有哪些優劣,在後續的文章中我都會一一解答……  

更多內容,請關注公眾號 DevOps

多快好省的做個app開發

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.