使用Swfit重寫Uber的好與壞
本文出自Uber移動架構和框架組負責人托馬斯·阿特曼于2016年在灣區Swift峰會上的演講,分享了使用Swfit重寫Uber的好與壞。以下為譯文:
我是托馬斯·阿特曼,目前是Uber移動架構和框架組負責人。Uber現在的用戶量已經達到數百萬,這么大的用戶量,Uber是如何用框架實現的呢?
Swift與百位工程師的故事——原因、架構、經驗
今天我想談談一百多名Uber工程師是如何使用Swift編程語言的,在上周三新發布的Rider App主應用程序全部都是用Swift語言重構的。接下來我的分享主要包括三個部分:選擇Swift的原因、Uber新架構;重構經驗。
優步的開端——重構的原因
這是整個移動團隊四年前的樣子(指向屏幕顯示有三名工程師的照片),就是從那時開始,他們著手搭建了我們現在這套老應用的基礎。老的應用程序已經穩定使用了四年,但由于移動開發團隊的指數級的增長,這套架構的缺點也逐漸顯示出來,基于這套老架構想做功能開發也變得越來越困難。由于跟不同團隊之間共用了很多ViewController,所以每次也需要對其它的代碼進行測試。老架構真正讓我們感到崩潰的主要原因是它是由兩位工程師寫出來的,但是目前團隊已經發展到了100多人。與此同時,那套產品本身的用戶量也不大。我們已經在多個城市開始運行,產品滑塊底部密集的問題也顯示出來了,原因就是因為所有的團隊都希望在他們所在的城市能夠推出新的產品。我們也想對Rider App做一套全新的用戶體驗界面。基于上述的這些問題,其實歸納起來也就是目前那套應用的架構問題和用戶體驗界面的全新設計問題。未來不再是研究老架構然后去解決問題這種形式了,而是一切都從頭開始。
2015年做了很多糾正錯誤工作,試圖去完善老的結構,但對Uber的全新設計,將會從根本上解決問題,到時會處于一個更安全的階段,從頭去重新設計也是最理想的一種解決問題的方式。
重構架構的目標——穩定可靠并且支持未來發展
基于這兩個重構原因開始了新架構的研發。最基本的需求就是滿足上述兩個要求,保證四條核心流程的穩定,這基本上就意味著崩潰率處于最低級別。 如果您的應用程序沒有崩潰,但用戶仍然停留在某些屏幕上,顯然這問題很重大,這會讓用戶覺得不可靠。
我們當然也希望新開發的架構能夠支持Uber接下來數年的發展,就像當時設計這套老架構的時候是為了滿足過去這四年發展的想法是一樣的。
Swift成為了我們的選擇
為了實現上述的兩個目標,我們選擇了Swift。當時我們認為Swift是更加安全的,至少在設想里是的,然而實際生活中并沒有人去驗證這一點。
我們認為編譯器中的類型安全性會讓問題更早的暴露出來,而不是等到產品上線以后再出現問題。
而我們知道,從現在開始的這四年,Swift將會進入到一段黃金發展期,它將會成為蘋果公司未來唯一一門大力推廣的語言。
時間線
從今年年初開始啟動的,在二月份的時候,我們當時還希望我們所做的事情是正確的,因為有一些工程師在以前的公司就花費了大量的時間去做重構的事,但最終都以失敗告終。為了保證重構能成功,挑選出了幾位核心工程師,讓他們花了5個月的時間去研究老的架構,在這5個月的時間內,我們就只干這一件事:架構,框架,完成一些基礎的工作,最終搭建了一套很完美的基礎框架,所有人都是以這套基礎框架為原型進行開發。
6月,架構搭建好,開始讓核心流團隊開始使用。核心流打算采用一種新的uberX騎行或者是uberPOOL騎行,因此我們增加了20位工程師,花了兩個月的時間去審查新的架構,確保我們提出來的東西與之前構建一款新產品的要求是吻合的。事實證明,與最開始的產品要求相比,的確遺漏了一些東西,比如在視圖層,一旦工程師開始進行轉換或者做一些復雜的視圖操作,那么我們必須調整架構以滿足他們的需求。但是過了兩個月,我們取得了新的進展,我們不再需要對代碼庫進行大量遷移,并且把平臺開放給了每一個人,如果他們需要的話,也可以移交他們的功能了。
新架構
新架構叫”Riblets”,它是由Router、Interaction、Builder、Presenter、View這幾個核心組件構成的,這也是VIPER框架的一種思想。我們研究了VIPER、MVVM和MVC,最終提出的方案是在VIPER基礎之上增加一些我們自己創新的元素在里面。最終目標就是將每個功能模塊化,并且每一個模塊可以獨立的進行測試。Riblet框架里的每一個核心組件都有一個協議接口,所以開發者可以把每一個單元單獨拿出來,對它進行充分的測試。Riblets框架里的每一個模塊都會在樹里面進行管理,因此沒有狀態機,取而代之的是一個狀態樹。狀態樹里面的每一個節點就是一個Riblet,新架構中的核心部分是基于業務邏輯的,而不是視圖邏輯,并且所有的業務邏輯都是由本地決定的。
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
使用Swfit重寫Uber的好與壞下載
相關電子資料下載
- 拿下國家級信創認證!中科馭數KPU SWIFT-2200N成為國內首款滿足金融業嚴苛要求的 163
- 中科馭數基于DPU的思威SWIFT系列智能網卡與統信軟件產品完成適配 176
- 如何使用Swift提高代碼質量 126
- 積木易搭Magic Swift Plus為雕刻工藝品精雕復刻提供三維數字化解決方案 274
- 詞法分析-Antlr-1 235
- Kotlin 1.8.0發布,改進性能和Swift的互操作性 1044
- Swift 2023:強調并發、泛型和C++互操作性,開發Swift解析器 300
- 彩色套件創建全彩3D模型MagicSwiftPlus僅千元級 432
- Swift的使用體驗與生態發展之路 981
- 如何加速apply函數600倍的技巧 627