如何讓產品,前端設計,開發,測試,部署,運維等各個環節更加規範化和流程化

天府雲創發表於2017-05-10
規範化。。。呃,這個東西看你要有多規範了,給你個cmmi定義的5個層次做參考吧。
1. 手工作坊式,即產品質量全靠開發人員的個人英雄主義做法,無法保證開發新產品能有同樣的質量。
2. 已經有了一些流程,進行一定的監控和控制,可以保證開發新產品有同樣的質量。
3. 標準的流程,明確的出入口條件。
4. 可度量的,有了明確的量度,可以對過程和結果進行數字化的度量以計算完成度。
5. 自優化的,預防性的,可以預估行為,過程,結果,應用新技術,進行相應措施優化過程。

為什麼IT運維需要自動化? 

所謂IT運維管理的自動化是指通過將日常IT運維中大量的重複性工作,小到簡單的日常檢查、配置變更和軟體安裝,大到整個變更流程的組織排程,由過去的手工執行轉為自動化操作,從而減少乃至消除運維中的延遲,實現“零延時”的IT運維。簡單的說,IT運維自動化是指基於流程化的框架,將事件與IT流程相關聯,一旦被監控系統發生效能超標或當機,會觸發相關事件以及事先定義好的流程,可自動啟動故障響應和恢復機制。自動化工作平臺還可幫助IT運維人員完成日常的重複性工作(如備份,防毒等),提高IT運維效率。同時,IT運維的自動化還要求能夠預測故障、在故障發生前能夠報警,讓IT運維人員把故障消除在發生前,將所產生損失減到最低。

運維應包括如下:

  • 環境定義:開發環境、測試環境、類生產環境、生產環境等。
  • 部署:能夠將部署包有效的部署到不同的環境。
  • 監控:能夠監控部署後的系統和應用。
  • 告警:出現問題時的響應和處理機制。
  • 效能優化:系統各個服務如Nginx/Java/PHP/DB/網路的優化。
  • SLA保障:通常要和業務相關部門討論確定。

image

服務治理、任務排程、叢集協同、呼叫鏈分析、介面質量、SQL質量、實時日誌等

打包、自動化測試、檢測、灰度釋出、分割槽上線、運維自動化、配置標準化、指令標準化等

分散式框架、儲存&快取中介軟體、自動化測試、雲搜尋、開放平臺、營銷平臺等基礎設施

 

自建技術基礎設施(開源+自研)  •自動化釋出系統——灰度釋出、分割槽釋出  •運維配置自動化系統——運維繫統自動發現、標準化配置  •原子指令系統——支援數百臺伺服器、數百個原子指令碼操作  •搜尋平臺——支援數百個索引、上億條資料  •推薦計算平臺——支援數億使用者資料計算  •API自動化測試系統、Mock模擬測試系統——支援介面的自動化測試、模擬測試、Web自動化測試  •API放水系統、SQL防水系統——治理系統不合理呼叫  •實時日誌系統——支援Nginx、Tomcat、BI實時日誌和離線跟蹤  •分散式開發框架——統一分散式通訊  •配置分發系統——支援配置項、叢集服務發現  •MQ分散式訊息中介軟體(推模式IDP、拉模式Kafka)——1500w/週一~週五,600w/週六日  •KV分散式快取系統中介軟體(Memcached、Redis、Tair)——億級資料快取、95%命中率  •LPFS分散式檔案中介軟體(MongoDB)——MongoDB、圖片、檔案  •DB資料庫分庫分表中介軟體(MySQL)——無限資料量擴充套件  •分散式任務排程中介軟體(Schedule)——支援100+服務、200+/日個分散式任務排程  •Push統一訊息推送平臺——每日100w+推送量,推送至Android、iOS、Email、SMS、微信、Comet

 

依賴開源的技術棧  •語言:Java(Tomcat/Spring) Shell(運維) Nodejs(前端)  Android iOS  •分散式:ActiveMQ Kafka Zookeeper Router服務發現 Cat  •儲存:Mysql Mongodb Tair Memcached Redis  •計算:Solr ElasticSearch Hadoop HBase Storm Spark  •運維:Linux Nginx Puppet Zabbix OpenStack  •專案管理:Eclipse Git Maven構建 Hudson持續整合 Confluence知識分享  DMS專案管理

 

image

image

image

 

開發階段Code/build  •開發框架  •|-web開發框架Swift  •|-nodejs前端開發框架  •|-ios移動開發框架  •|-android開發框架  •|-shell指令碼自動化  •分散式中介軟體  •|-分散式呼叫RPC  •|-實時推送comet  •|-推訊息佇列IDP  •|-拉訊息佇列Kafka  •|-配置系統Zookeeper  •|-排程系統Scheduler  •儲存中介軟體  •|-關係儲存mysql  •|-檔案儲存mongodb  •|-KV儲存tair  •|-二級快取redis  •|-一級快取memcached  •計算平臺  •|-雲搜尋  •|-推薦  •|-大資料計算  •|-網頁解析  •|-文字解析  •|-Word預覽  測試階段Test/ci  •|-API自動化測試  •|-API模擬測試Mock  •|-Web自動化測試Selenium  •|-微信測試WXTest  •|-Open測試KATest  •|-測試環境釋出  上線階段Release/deploy  •|-釋出系統  •|-運維繫統  •|-程式碼檢測Builder運維階段  運維繫統Monitor  •|-自動化系統  •|-監控系統Zabbix  •|-雷達日誌系統  •|-Puppet/Mco

服務治理Service  •|-API放水系統APIWater  •|-SQL放水系統MonyogSQL  •|-Router服務中心  •|-配置分發系統  •|-排程系統Scheduler  •|-呼叫鏈系統Cat運營階段  •開放平臺  •|-微信平臺Weixin  •|-微博平臺Weibo  •|-電話平臺Jiya  •|-支付平臺Pay  •|-開放平臺API  •|-SEO平臺Resource  •運營平臺Channel  •|-推送平臺Push  •|-簡訊平臺Push  •|-郵件平臺Mail  •|-微信平臺Open  •|-私信平臺MessageCode

image

 

1、分散式服務架構

image

服務發現、通訊、控制  分散式註冊中心Router:  •同步呼叫RPC  •服務協議:HTTP協議/心跳檢測  •服務發現:叢集資訊統一檔案Router.conf  •負載均衡  •非同步呼叫MQ  •推模式:開發快、穩定、實時快  •拉模式:可回溯、日誌收集、資料同步  •分散式任務排程  •Schedule排程系統  •分散式事務控制  •Swift開發框架:交易型事務的一致性

2、運維研發的自動化體系

image

運維配置標準化3大層次

•2.1、硬體標準化:  •-機器標準化:機房、機架位、交換機、機器  •-資源標準化:IP、DNS  •-配置標準化:機器配置自動化採集、標準化檢測,KVM化  •2.2、軟體標準化:  •-軟體安裝標準化:tomcat jdkmemcachedredis...  •-Nginx標準化:域名、配置、釋出  •2.3、專案標準化:  •-專案配置標準化:S區、A區、B區、C區  •-支援多種專案:tomcat、java、nodejs、Python、ios\Android

 

2.1、硬體標準化—自動化採集

image

image

2.2、軟體標準化—統一軟體規格

image

2.2、軟體標準化—自動化安裝解除安裝

image

2.2、軟體標準化—服務自動管理

image

2.2、Nginx標準化—自動配置300域名

image

image

 

3、專案釋出自動化體系  •3.1、程式碼釋出系統  •-灰度釋出  •-分割槽釋出:泳道釋出  •3.2、配置釋出系統  •-釋出配置資訊  •-叢集協作:Solr、Kafka  •3.3、原子指令  •-系統級操作  •-系統操作日誌

 

4、服務治理體系  •服務健康狀態檢測  •分散式任務排程(Schedule)  •呼叫鏈分析(Cat)  •實時日誌監測(雷達系統)  •API質量治理(APIWater)  •SQL質量治理(Monyog)

4.1、服務健康狀態檢測

4.2、分散式任務排程Schedule

分散式排程中心:  •基於Mina分散式協調  •選擇服務的單點排程  •多點服務failover  •長時間任務斷點續傳  •任務依賴排程

 

4.3、呼叫鏈分析Cat

4.4、實時日誌監測(雷達系統)

•實時日誌檢視  •歷史日誌分析  •使用者或IP追蹤  •日誌統計

image

4.4、實時日誌監測

4.6、SQL質量治理(Monyog)  •MySQL效能監控工具MONyog,分析慢SQL  •程式列印慢SQL日誌  •優化索引、表結構

5、測試環境的自動化構建

6、自動化測試

    自動化測試—API自動化測試

    自動化測試—Web自動化測試       •Selenium—Web頁面的自動化測試

    自動化測試—Mock模擬測試


以上內容部分來自網路, 希望對您系統架構設計,軟體研發有幫助。

相關文章