做爲一名互聯網產品運維,對什麼是好的產品(技術架構角度)有本身的感悟(我負責運維的產品高峯日訪問量在10個億,機器分佈在全國不一樣機房,雖也有大小問題,但總體運行不錯)。產品運維是一個既要和開發又要和各基礎運維打交道的職務,要考慮到結構、擴容、容災、高可用和優化等各方面的事宜,又要研究產品的邏輯自己(排障時須要),工做中發現,一個好的互聯網產品不只在優秀的代碼自己,更體如今後期的易運維性、可擴展性、高可用性等。隨着用戶量的變化、機房的變化甚至員工的離職,可能隨時須要彈性的調整資源改變策略來應對各類問題,而這就是體現產品是否足夠優秀的時候。php
若是是新產品,在設計階段運維就有必要參與進來了,由於作出來的產品最終都要交付上線,放到服務器上給用戶提供服務,一是運維更加了解線上環境,研發階段簡易的demo開發環境放到線上會遇到各類問題;二是開發過程若是缺乏運維意識,上線後在作資源彈性調整及其它策略改變可能會遇到各類麻煩;另外運維人員會根據模塊屬於不一樣的IO消耗型、cpu消耗型、內存消耗型等需求提出更加合理的上線服務器環境,提早參與產品中也可對節省成本的同時提升性能有很大幫助。根據經驗,我總結了4個要素,一樣若是對於已經作好的產品,從優化的角度去提高產品性能同時減小故障,也是從這「4要素」出發:前端
1、整個系統的功能要模塊化(微服務),單個模塊高內聚低耦合;nginx
大型互聯網應用面對全國乃至世界範圍的使用,要面對開發分工、迭代、擴容等各類場景,使用中要保證優秀的用戶體驗、良性的迭代升級和業務擴展,必定要使用微服務的架構設計思想進行模塊拆分,一個沒有模塊劃分的系統是不可能完成這項任務的,想一想幾百號人圍繞着一套代碼轉是個什麼樣子。一個優秀的大型互聯網應用會在設計之初就進行模塊化,每一個模塊各司其職,模塊間經過HTTP API或者消息隊列進行通訊,各模塊根據工做量和難度分給不一樣項目組負責,最後單個模塊造成高內聚、模塊之間造成低耦合的模型,該是誰的事兒就找誰,固然功能模塊怎麼劃分更加科學,就須要作研討了,研討中要從當前開發的科學性和後期上線可運維性兩個維度來作考慮。redis
2、每一個功能模塊相對獨立易部署、所需資源彈性可擴展;
後端
要應對線上變化的環境、用戶量的天然及突發性增加、開發者的人員變更,每一個功能模塊在作到功能獨立高內聚的同時,要作到運維的可交付、資源的可彈性擴展。tomcat
運維的可交付體如今模塊的易部署(越簡單越好),部署過程不依賴修改源代碼,所需的配置文件、代碼能夠作到統一下發。服務器
資源的彈性擴展是爲了應對用戶量的天然及突發性增加,好比說要作一個活動,訪問量會突發翻倍,這時模塊要能作到易擴展,能夠彈性的經過簡單的擴容服務器來增長系統吞吐量,不至於形成系統瓶頸,每一個模塊作到了彈性可擴展,整個應用纔會變成一個彈性可伸縮的強大產品。架構
3、每一個功能模塊無單點故障點,如遇後端依賴故障能夠降級服務;
運維
爲了讓開發和運維人員可以睡個好覺,一個好產品的每一個模塊必須可以作到服務器間容災且無單點故障,就是說一臺服務器掛了不會影響到模塊服務,進而影響到整個應用的癱瘓,每臺服務器模塊都是一個獨立的個體,互不影響,當某臺服務器掛了以後剩餘的服務器能把活兒接起來,固然這是最理想的模型,若是實在沒法作到熱備,最起碼得作到無需人工干預的冷備。ide
模塊之間都是協同工做的,每一個模塊均可能承上啓下相互依賴,在向前端輸出任務處理結果時也依賴後端其它模塊的處理結果,這時就要考慮到萬一依賴的後端模塊掛了或者超時怎麼辦的狀況,以防出現雪崩的連鎖反應,這時模塊就有必要設置降級預案機制,好比說當那不到結果或爲空時向前端返回一個默認的或最近處理的結果,應付一下用戶,總比返回錯誤信息要強,而後騰出時間解決問題,再好比是個新聞類應用,能夠返回一個近期的靜態頁面。
4、每一個模塊的日誌健全,作到可分析、可監控。
日誌的健全性很重要,日誌能夠及時的發現問題、分析問題、分析模塊的性能、故障點等等,總之日誌能夠反應出各類問題,其包含但不限於操做系統日誌、業務日誌(訪問、超時、錯誤)、後端資源依賴日誌等,分析的結果同時正向反饋到下一步的產品迭代研發中去。
對於監控,也分爲了基礎監控、應用軟件監控、業務監控、依賴監控四個層面,簡單介紹一下,基礎監控指服務器各類基本指標包含cpu、負載、io、內存使用、網卡流量等的監控,應用軟件只nginx、tomcat、php-fpm等應用軟件自己性能的監控,業務監控是指訪問後或對於任務處理狀況的日誌監控,好比說nginx的訪問日誌,依賴監控是指其依賴模塊或資源的監控,好比說MC、redis等。
寫在最後:若是一個大型互聯網應用可以作到這「4要素」,這個產品就是一個很高級的妖怪了,可以抵抗×××。(所說「產品」是技術層面產品,並非爲網民設計的接入層用戶體驗類邏輯產品)
自建我的原創站運維網咖社(www.net-add.com),新的博文會在網咖社更新,歡迎瀏覽。