<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 開源文化對360企業安全的影響 摘自 InfoQ [360的開源軟件使用以及開源文化構建經驗](http://www.infoq.com/cn/articles/360-open-source-software-and-culture-build-experience) 奇虎360企業安全從2011年到2015年,經歷了幾次服務端架構的變遷。從一開始的軟件自研到最后的全部使用開源軟件,360企業安全部真切體會到了開源軟件帶來的好處。另外,360也通過各種各樣的方式來構建自己開放、透明、平等的企業文化。InfoQ編輯采訪了奇虎企業安全高級工程師溫銘,聽他分享了360內部的開源軟件實踐經驗以及開源文化構建經驗。同時,溫銘還將在ArchSummit全球架構師峰會上分享題為《開源文化對360天擎架構演進的影響》的演講,敬請關注。 > InfoQ:能分階段介紹下360企業安全的服務端架構的演進情況嗎? 360企業安全服務端的架構演進主要分為三個階段。第一個階段是以自己開發的組件為主。我們用C++自己寫了一個簡易的Web Server,并在此基礎上面衍生的一系列工具。頁面的開發,我們沒有使用成熟的PHP框架,而是自己寫了個路由。這一階段產生的問題就是基礎組件不穩定,跟不上產品功能的快速迭代,而不穩定的產品,企業用戶也不能接受。開發付出了很多努力,但一直沒有找到適當的節奏。 后面有幾個開發的同事覺得要跳出這個糟糕的循環,于是就在新模塊的開發中引入了OpenResty和Yii,并和自研的組件并存。這樣帶來的明顯好處是效率的提升,開發有精力來完成了前后端分離,QA也從完全的黑盒測試中脫身,搭建了服務端的自動化測試和性能測試。這些改變為后面重構打下了堅實的基礎。 在第三個階段,我們重構了產品,并統一了服務端的技術架構,同時相關的功能組件全部換用成熟的開源軟件搭建。比如我們使用OpenResty來搭建整個服務端,周邊工具用Python和Go來完成,報表和數據分析采用ElasticSearch。這樣開發就可以更專注于產品功能實現和開源軟件的深入學習,而不用擔心基礎組件的穩定性。 > InfoQ:你提到,一開始的時候你們的開發人員都在自己『造輪子』,那這樣的方式有什么問題?在自研和開源軟件之間,你認為應該如何選擇? 溫銘:很多時候,『造輪子』的原因是開發人員沒有找到合適的開源軟件,或者在技術方面自視過高。盲目的自己從頭開發組件,時間成本、穩定性以及后續的維護都是問題。我認為『造輪子』的前提是,現有的成熟開源軟件不滿足你的需求。比如360云查殺對性能要求非常高,而當時沒有開源軟件符合需求,所以我們就在LevelDB的基礎上面開發自己的Key-Value數據庫。而對于大部分的服務端開發來說,開源軟件足以應付相關需求。 > InfoQ:開源軟件的選型上,你有什么好的經驗嗎? 溫銘:現在開源軟件發展非常快,新技術層出不窮,在技術選型的時候,你會面對很多的選擇。不管使用什么開源軟件,在服務端的架構層面,你都需要做到各個組件像樂高積木一樣,沒有耦合并且可以方便的進行更換。在你產品的第一個的版本里面,最好選擇成熟穩定、自己團隊熟悉的開源軟件,而不是性能最好的,因為這時候你需要快速的出產品和快速迭代,性能并不是最重要的;在隨后的版本中,你可以通過性能測試的各項數據,來決定使用哪個開源軟件。除了性能的考慮之外,開源軟件自身的發展也需要考慮:對開發者是否友好、修復bug的速度、版本迭代的周期等。 > InfoQ:開源軟件的使用過程中,經常會涉及到需要修改開源軟件的代碼。那在內部版本和社區版本之間,你們是如何同步的,有什么好的經驗嗎? 溫銘:360企業安全服務端有一個特殊的產品需求,是其它產品的服務端開發不會遇到的,就是需要支持Windows平臺。因為很多企業還是希望軟件運行在Windows上面。所以我們會對一些開源軟件進行修改,以增加對Windows平臺的支持。我們剛開始的做法是下載源代碼,然后修改,但造成的問題是沒法快速跟進開源軟件版本的更新,也沒法把修改的代碼回饋到社區。現在我們會fork,然后把改動pull request向社區來回饋代碼,同時要有完善的測試案例和文檔,代碼要符合軟件本身的編碼風格。 > InfoQ:你怎么看開源文化?360是如何構建開源文化的? 溫銘:360在GitHub上面開源了多個自己開發的軟件,公司內部有技術評級以及定期的技術嘉年華,鼓勵工程師主動分享技術并參與到開源軟件中去。在技術團隊中,透明和平等的文化,最適合各種技術的成長。我們團隊有一個不成文的規定:AKA(all know all)。比如在技術選型上,我們會出一個大概的架構,然后發給所有開發討論,由于我們是一個大雜燴的技術團隊,有人說“PHP是最好的語言”,有人是Python的粉絲,還有人推崇Go,還有人堅守Windows平臺,所以各種討(chao)論(jia)后才確定最后的選型。 > InfoQ:要使用開源軟件,是不是需要團隊成員對這些開源軟件有足夠的了解? 溫銘:即使不去修改開源軟件的代碼,團隊成員也需要對這些軟件的內部實現有深入的了解,才能用到適合的場合以及做參數的調整。我們每周會有定期的技術分享和code review,來保證團隊每個人都知道團隊使用了哪些技術,如何更好使用這些技術。 > InfoQ:團隊在參與開源軟件方面,你有什么好的經驗可以分享? 溫銘:最重要的是要團隊成員有主動性和熱情參與其中。并不是貢獻了patch才算參與到開源軟件中,在實際的開發中解決了問題,總結分享出來,也是一種方式。我們團隊正在GitBook上面寫關于OpenResty和ElasticSearch的書,分享我們的一些實踐。這也是一種參與開源的方式。 受訪嘉賓介紹 溫銘,一直在互聯網安全公司從事高性能服務端的開發和架構,用各種技術手段打擊木馬傳播和互聯網欺詐。目前在奇虎用互聯網技術幫助企業提高安全防護。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看