因爲以前經驗不是很豐富,寫的C#系統太過複雜,因此一直想重寫,但學的越多越覺的本身懂的越少,越以爲底氣不足。因此一直不敢動手,在心裏深處對本身講,要靜下心來認真學習,繼續沉澱沉澱。這兩年多以來找各類機會去參加各類沙龍或交流會,有空時就啃啃技術書籍,又或者看看一些文章或源友,努力向博客園大牛們學習。前端
因爲工做關係,這兩年不多接觸C#,一直在作產品設計、項目設計、架構設計,15年末公司有機會參加了個小項目開發,使用的是python語言開發web版的TMS,從而一發不可收拾喜歡上了python。在體驗了python開發的便捷之後,接下來就有了python開發的第二個、第三個web項目。python
第一個項目是在運維同事小戴(運維大牛)的指導下,花了三天時間學習python基本語法,而後花了一天時間熟悉小戴寫的Python框架,就立刻進入開發寫業務,大概花了一個月左右時間就完成了公司安排的項目並上線了。學習的第一個python框架是一個輕量級、直白、簡單的框架(你們能夠上小戴的博客http://www.linuxyw.com/去學習,有詳細的教程和源碼),這個框架的代碼追求的是讓沒什麼基礎的人也能很容易看明白每行代碼的用途,讓初學者容易上手開發維護,下降系統的維護難度。經過這個項目的開發讓我從新反思之前本身所寫的代碼與框架的利弊,過多的使用一些技術與模式,讓本身的框架表面看功能很強大,但入門門檻就很是高了,雖然有不少文檔與註釋,但要學會並靈活應用就不是那麼容易的事情,維護起來也比較困難,反而返璞歸真的編碼方式讓人有另外一種感覺。linux
因爲第一個項目完成的不錯,因此很快公司就安排了第二個python項目。有了以前的項目經驗後,發現原框架有好多重複的代碼存在,代碼的重用率不高,因此花了三週時間對項目底層進行了重構,根據本身的須要開發了一個全新的ORM模塊,對不少工具函數進行了重構,優化了數據層代碼,增長了邏輯層,根據須要在IDE中整合了多項目共享同一模塊代碼......固然這個過程當中踩了不少不少坑,在跌跌碰碰的過程當中完成了初版的python快速開發框架。而後使用這個框架和另外一位後端開發人員+10位前端開發(android/ios/web)用了三個月左右時間完成了一箇中型項目開發,並經過測試上線運行。android
創業型公司的生命是短暫的,在16年的10月份公司進入了清盤,公司解聘了全部員工,拿了補償後應廣東老東家邀請回到了廣州上班,廣州公司業務比較複雜,原系統的擴展性不強,每增長一個電信運營商就得部署一套差很少的代碼,若是合做的APP同時接入不一樣的運營商,就得部署多套相似的接入不一樣運營商的服務,也就是說合做越多部署的服務就會越多:運營商*N個*N個APP合做商=xx個服務。維護起來很是麻煩,且數據不能共享,須要從新開發一套系統來代替原來系統。因爲python開發效率高速度快、維護方便等緣由考慮,就有了我第三個python web項目,同時也是我獨立設計的第一個分佈式微服務架構的項目,經過一個多月孤軍奮戰,對原python框架進行了全面重構和重寫,python快速開發框架2.0版終於出來了,接着在另外一位同事的共同努力下,用了一個月時間完成了舊系統業務功能往新系統遷移開發,並交付給客戶使用,與客戶們的舊版APP實現了無縫平滑對接。ios
在學習並使用python開發的過程當中我常常在思考,一個好的框架會用到各類封裝、設計模式、面向對象的各類原則與準則,而想要讓一個初學者快速上手立刻進行業務開發卻很難。由於封裝多了,代碼簡練了,重用性高了,而帶來的結果是可讀性可理解性卻降低了,若是沒有完善的文檔或花大量的時間去了解,很難學得透。這兩年時間本身也在嘗試學習別人寫的框架,學習別人寫的教程,雖說本身已經有十多年的開發經驗,可學習起來常常也會感到力不從心,很吃力,由於拿到一份源碼後,發現代碼量太大,無從下手。而本身在使用本身寫的框架時就不會出現這種狀況,爲何呢?通過深刻思考發現本身寫的框架也不是一步到位一開始就很複雜的,它也是開始很簡單,當開發經驗累積之後,爲了應付各類業務情況不停的重構與修改,慢慢變的愈來愈複雜,功能也愈來愈強大,而框架的可讀性也慢慢隨着降低了。當這樣的框架給到別人學習時,他們不瞭解框架的發展歷程,不瞭解不少功能模塊、變量、參數......爲何要這麼設計,不瞭解模塊與模塊、函數與函數等它們之間的關係,要想快速掌握新的框架可想而知難度有多大。因此即便學會了新框架的使用與開發,對於框架中存在的bug殊不知怎麼去修改,更不用說根據業務的須要有針對性的去改造框架底層不合理的地方了。web
爲了方便同事們的學習,也完成本身的承諾,因而就有了本系列文章。後端
本系列博文主要講述的是一個小菜鳥,剛學會python就接了一個外包,寫了一個很簡單的web企業網站,而隨着這個企業的發展,需求的不停變動,繼續不停的改造與重構,企業網站變成一個小型電商平臺、大型電商平臺的過程(是否寫一個大型電商平臺暫時未定案,也有可能開發一個企業管理系統)。而代碼也經過不停的重構,從一個簡單得不能再簡單的幾行代碼變成能應付各類業務需求變動,能快速完成開發任務的成熟框架。固然中間也經歷了各類各樣的坑與障礙,但願你們能喜歡這個故事,並與小菜鳥共同成長。 設計模式
本系列文章會分爲幾大部分,第一部分主要講的是一些基礎、開發常識、開發環境與運行環境等內容,代碼也會很是簡單直接;第二部分是以重構爲主,即主角稍微成長起來了,發現有不少重複的代碼,加上出現一些突出事件,須要對系統進行重構,完善系統功能;第三部分是隨着企業業務的發展,對IT會愈來愈依賴,提出了各類各樣的需求,針對這些需求對系統進行完善;第四部分主題是變革,隨着系統的完善,在這個過程當中會發現代碼變得複雜,應對爆增的數據和訪問,現有架構體系沒法負載,須要對系統框架進行變革,升級服務器架構與系統框架,往分佈式、高可用、微服務架構發展變化;若是還有第五部分的話,將會講解企業架構方面的內容,IT系統根據企業的發展戰略和現有業務能力,增長用戶行爲分析、業務數據分析等大數據分析系統,推進企業的發展。服務器
若是從企業架構成熟度來說,第1、二部分,是處於項目驅動技術階段,一切以項目決策爲主;第3、四部分,是處於業務驅動階段,業務開始依賴技術,技術根據業務須要完善與促進業務發展;第五部分是戰略驅動階段,企業慢慢對技術熟悉,會更多的利用數據分析來進行戰略決策,而技術在企業方面也佔據着愈來愈重要的角色,經過大數據來指導企業的發展。架構
因爲我日常工做很忙,因此暫定寫這幾個部分,到底可否所有寫完還不知道,只能走一步是一步了。前面兩三部分應該沒有問題,後面兩部分涉及的內容太多,很差規劃,章節數量恐怕會不少,若是寫不完你們有興趣的話,也能夠加羣一塊兒討論探討一下。
版權聲明:本文原創發表於 博客園,做者爲 AllEmpty 本文歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然視爲侵權。
python開發QQ羣:669058475(本羣已滿)、733466321(能夠加2羣) 做者博客:http://www.cnblogs.com/EmptyFS/