成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

漫談社區PHP業務開發 提高效率縮短開發周期

開發 后端 項目管理
針對新產品的開發,必須能夠快速搭建一套LAMP架構。那么無外乎選擇一個webserver,選擇一個php版本,選擇一個mysql版本,再選擇一個PHP開發框架和選擇一些php通用擴展和基礎庫等。

在當前這個互聯網業務飛速發展時期,新的產品如雨后春筍般涌出,老產品線新業務也在不斷突破和嘗試。這就對快速開發迭代提出了更高的要求。

一、基礎運行環境

針對新產品的開發,必須能夠快速搭建一套LAMP架構。那么無外乎選擇一個webserver,選擇一個php版本,選擇一個mysql版本,再選擇一個PHP開發框架和選擇一些php通用擴展和基礎庫等。這個過程讀者可能覺得已經很快了,能不能更快?

選擇的過程要求研發同學對相關技術方向有一定的積累,權衡利弊和優先點,又是一番調研和學習。如果有一鍵安裝程序,提供自動化安裝webserver,php,mysql,以及攜帶高性能靈活的php開發框架,并提供標準化、安全、常用的配置文件,可以大大縮短產品線LAMP系統調研的成本,縮短工作周期。

一鍵安裝四步驟:(1)下載;(2)少量配置;(3)make install;(4)start;(當然有end啦,簡單的運維工具),運行環境OK。

二、業務開發框架

社區產品線各自為政,封閉得開發各自的業務邏輯。而事實上,各個產品線之間存在很多通用業務邏輯處理,如session驗證、權限判斷、參數驗證、日志打印等。不同產品線,所有請求都需要做這些處理,能不能不重復開發?無線業務開發和PC上的業務邏輯有很多的不同,但不同產品線之間也有很多通用性。能不能不重復開發?

產品線在內部通常對這些通用邏輯的處理做了一定的抽象,設計為ActionChain的形式或者通過基類的方案。框架將更徹底:將這些所有請求都要處理的通用邏輯以業務邏輯框架的形式提供,研發同學只需要關注用戶請求專有的邏輯處理。

一個用戶請求的處理邏輯如下圖:藍色部分是控制器框架處理流程,綠色部分和控制器框架相結合,處理所有請求通用的業務邏輯。而真正需要研發同學關注和開發的該用戶請求專有的業務處理,即黃色部分(當然一個不僅僅是一個Action腳本,一個請求的處理會橫向做mvc分層,這塊后續會有涉及。)

業務邏輯框架繼承在一鍵安裝程序中提供,簡簡單單就可以獲得。

原生的PHP業務和模板耦合很深,沒有做任何的分層設計,其結果是代碼的復用性差。這樣的原始的PHP系統現在已幾乎消亡。PHP開發框架統一處理路由、渲染、AutoLoad,通用業務邏輯的抽象和基礎庫的抽象,專有業務MVC分層,已大大加快了產品線業務邏輯的開發。如下圖所示:

從上而下,分別是接入層(高性能webserver),PHP開發框架(路由、自動加載、視圖引擎等),應用和基礎庫,存儲引擎。

三、通用服務

社區產品線存在很多共同的需求,如日志處理、配置文件的處理、字符串處理、數據庫交互、網絡交互等。這些算法和工具封裝成phplib給產品線使用已比較成熟。

社區類產品線的業務功能存在很多的通用性,諸如評論功能、Tag功能、好友功能、圖冊、任務系統等,在眾多社區產品線都有類似的新功能新需求,各自設計開發?

這些需求在各產品線的UI上有個性化需求,但是后端實現方案大同小異,具有一定的通用性。功能服務化,提供API接口給不同產品線使用,產品線只需要關注展現邏輯和私有數據的處理邏輯即可,且服務統一運維,降低產品下的系統復雜度。

四、垂直拆分子系統

那么隨著我們業務的拓展,單個應用內部的ui和module的數量越來越多,Action和Logic(對應MVC中的M層,內部可以再進一步做分層處理,此次不詳述)的交互,logic和logic之間的交互變得越來越復雜。開發同學需要了解整個應用的邏輯,某個logic的升級,需要排查整個應用下是否存在其他ui或logic的反向依賴。在快速開發的要求下,開發同學對logic之間的相互耦合關系的梳理不清楚,勢必引發越來越多的問題,影響項目質量,難以開始開發。

單一系統的問題暴露越來越多,就到了系統拆分的時候了。如何拆?按業務邏輯垂直拆分。將功能獨立的業務邏輯剝離出來,做成獨立的子系統。這個時候還需要考慮業務的通用性,是否可以服務化?應用已有相同需求的通用服務?此時通用業務邏輯封裝成通用服務或使用了通用服務,旁路的業務邏輯獨立成子系統,如此一來就將原先單一龐大的系統做了大量減負。完成此階段的重構后,系統加入變成如下

單一系統被拆分成多個APP(APP內部仍然有橫向的MVC分層),并復用大量的通用服務。如此一來研發團隊在人員分工并行開發上都得到了極大提高。

五、跨系統調用框架

然而真實的現狀,在拆分后的子系統之間并不能完全消除依賴。為了解決多個子系統之間數據依賴的關系,需要一套統一的解決方案:API框架。子系統成為獨立的應用(APP),APP之間存在相互的數據依賴,這些依賴以API的形式對外提供。如下圖

當APP1依賴APP2或APP3的數據后,APP2和APP3會將一部分數據接口以API的形式提供,數據做統一的打包,通過標準規范的URL提供產品線內部其他APP調用。這種形式非常類似于一個產品對外開放API(對第三方開放API,我們稱為openAPI,遵守統一的協議,并經過必要的權限驗證),而解決內部子系統之間數據依賴的API接口可以進一步簡化。

APP提供的API解決提供接口描述(輸入、輸出),處理API的URL,Logic的轉發實現。API_LIB統一來管理所有的API接口,并提供統一的API_Server::call接口供調用。完全對上屏蔽內部的轉發和實現細節。通常產品線內部為了達到運維的簡化和統一,所有的子系統是同機部署的,API接口的會帶來額外的網絡消耗,以及增大qps。在此部署前提下,API_Server的實現方式可以通過HTTP調用或優化為直接PHPRequire方式實現。優勢:

(1)框架統一,接口收斂,業務解耦;(2)性能提升,易用性高,擴展性高;

六、UI拆分模型

此時獨立出來的子系統可以專注做其業務邏輯了,核心的系統也得到減負。但是核心系統的升級更新頻率是最高的,業務邏輯也最復雜。到了一定時期,核心系統又變得臃腫,難以維護。此時可以通過一些設計模式來降低程序的可擴展性和可維護性。但即便是如此,還是有一定的學習成本,在一個App內部,開發同學或多或少需要關注其他模塊的代碼,逐漸發展為升級一點就需要排查很多點。這時候又到了進一步減負的時候。如果減負?分為兩部:

第一步:異步模型

頁面渲染分為兩個階段:主題頁面數據和其他非主題頁面數據。根據頁面的不同部分由不同的數據源提供數據。按此邏輯將app進一步做垂直拆分。

PHPService是由PHPmodule+一層很薄的UI,返回格式化數據。

第二步:同步模型

Module做拆分,不同業務邏輯拆分為不同的Module,區分為多個數據源,分別提供不同數據內容,由統一的UI調度不同的數據源后,統一進行渲染頁面返回響應。

如此持續減負后,產品線內部的子系統和模塊將越來越多,需要維持部署和運維的統一。對團隊成員的分工很細,業務理解很專注和深入,合作、并行的效率也會更高,從而使整個開發周期縮短。

七、 小結

隨著業務邏輯的不端壯大,每個子系統或模塊的業務功能如果過于臃腫就需要不斷做減分,以保持在可控的規模內。如此隨著產品的發展,產品線內部的子系統和模塊將越來越多,需要維持部署和運維的統一,保持簡單。對團隊成員的分工更細,業務理解保持專注和深入,合作、并行的效率也會更高,從而使整個開發周期縮短。

原文鏈接:http://www.php100.com/html/itnews/PHPxinwen/2012/0726/10750.html

【編輯推薦】

  1. 40年生涯中的600萬行代碼
  2. 互聯網產品經理常用軟件及工作平臺
  3. 一個失敗創業者的告白
  4. 在項目中尋找代碼的壞味道(綜藝命名)
  5. 在項目中尋找代碼的壞味道(命名)
責任編輯:張偉 來源: PHP100
相關推薦

2016-12-29 11:41:45

2023-05-17 16:47:47

物聯網智能建筑

2010-04-13 15:14:31

Oracle優化

2015-09-06 16:05:57

綠色數據中心效率

2012-03-27 09:17:43

Visual Stud

2018-09-30 14:46:38

Linux命令技巧

2015-11-27 12:59:11

Android技巧提高效率

2016-03-07 11:09:00

.NET程序員開發工具

2010-09-09 16:51:50

2020-06-04 15:55:54

GitHub代碼開發者

2025-01-15 17:00:00

開發Linux命令

2020-01-21 19:39:31

數據中心服務器工具

2023-10-23 15:02:53

JavaScript

2012-06-01 14:44:27

惠普臺式機

2012-07-16 00:51:36

程序員效率

2019-06-25 08:42:13

Linux命令指令

2014-12-12 09:52:04

JavaScript

2021-11-12 16:54:07

云計算5G云應用

2023-01-10 11:18:29

DevOps

2015-06-02 09:33:30

編程效率程序員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲人精品午夜 | 9久9久9久女女女九九九一九 | 999久久久 | 91精品国产一区二区三区动漫 | 久久小视频 | 999久久| 精品一区二区三区在线观看国产 | 亚洲精品成人网 | 涩爱av一区二区三区 | 精品亚洲一区二区三区四区五区高 | 欧美精品在线看 | 日韩在线一区二区三区 | 中文字幕日韩三级 | 在线免费黄色 | 精品一区二区久久 | 欧美成人精品激情在线观看 | 国产精品欧美一区二区 | 天天操天天干天天曰 | 欧美一极视频 | 免费毛片网 | 久久中文字幕一区 | 亚洲综合日韩精品欧美综合区 | 国产精品不卡 | 亚洲日本一区二区 | 亚洲a人 | 成人激情视频免费观看 | 国产精品视频中文字幕 | a级在线观看 | 亚洲第一av | 国产日韩欧美一区二区 | 国产一级在线视频 | 久久久精品 | 日韩欧美国产一区二区 | 欧美一级艳情片免费观看 | 午夜影晥 | 欧美日韩在线观看一区 | 99精品国产一区二区三区 | 国产精品国产成人国产三级 | 亚洲国产欧美精品 | 精品欧美乱码久久久久久 | 久久久国产一区二区 |