<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                > 作者 Jo?o Miranda ,譯者馬凱 發布于 2014年4月1日 [DanielSchauenberg](https://twitter.com/mrtazz)在[倫敦QCon](http://qconlondon.com/)大會上描述了[Etsy](https://www.etsy.com/)是如何做到每天50次部署的。Etsy以其DevOps和持續交付的實踐而聞名。一個完全自動化的部署管道、全面的應用監控和基于IRC(互聯網中繼聊天)的協作是能達到這個變更頻率的同時又保持最小風險的重要因素。 Etsy的開發策略是反復圍繞著做許多小的、連續的變更。這樣做的一個直接后果就是需要每天做很多次部署。用DanielSchauenberg的話來說,在任何時刻每個Etsy的開發人員都需要知道下面這個問題的答案:“我現在有足夠的信心來部署這個變更嗎?”。為了能夠每次都可以輕松部署,Etsy采取了一系列的工具和做法:強制基于IRC的溝通、開發者虛擬機、持續集成、一鍵式部署、全面的應用和系統監控、對于開發和運營團隊都采取免責怪的事后檢查(post-mortem)和隨叫隨到的政策。 每個開發人員都擁有自己的通過[Chef](http://www.getchef.com/)配置的[KVM](http://www.linux-kvm.org/page/Main_Page)(基于內核的虛擬機)。在線上運營中使用的[cookbooks](http://docs.opscode.com/chef_overview_cookbooks.html)也同樣地用在了開發人員的虛擬機中,這意味著每個開發者都有自己完整的Etsy棧。任何人都可以通過[VirtualMadness](http://codeascraft.com/2013/09/23/lxc-automating-containers-aka-virtual-madness-part-2/)(一個可以實現整個過程自動化的Web應用)來提供一個虛擬機。 在持續集成方面,Daniel解釋了[Try](https://github.com/etsy/TryLib)是如何成為所有過程的核心。Try是一個工具,它允許開發人員在[Jenkins](http://jenkins-ci.org/)(在Etsy中使用的持續集成工具)中[測試他的代碼變更](http://codeascraft.com/2011/10/11/did-you-try-it-before-you-committed/),而不需要先提交到trunk中。Try有助于保持trunk干凈從而實現可部署,而同時讓開發人員能夠快速、可靠地測試他們的變更。CI(持續集成)集群必須強大到足以支持150名工程師,以及每天超過[14000](http://codeascraft.com/2013/09/23/lxc-running-14000-tests-per-day-and-beyond-part-1/)[個測試集的運行](http://codeascraft.com/2013/09/23/lxc-running-14000-tests-per-day-and-beyond-part-1/)。[LXC](https://linuxcontainers.org/)(Linux容器)會平衡工作的負載,它們還提供了隔離機制,確保不同測試的執行之間不會沖突。 部署管道會經過Princess,或者工作臺,這是一種上線前的環境。Princess的所有意圖和目的就是上線環境,但只有Etsy的員工可以訪問它。[Deployinator](https://github.com/etsy/deployinator)是由Etsy構建并使用的部署工具,提供一鍵式部署。 配置標志,也被稱為功能標志,是部署過程中的一個主要組成部分。[通過其功能API](https://github.com/etsy/feature),Etsy能夠做[A/B](http://en.wikipedia.org/wiki/A/B_testing)[測試](http://en.wikipedia.org/wiki/A/B_testing),即完全啟用或者禁用某一功能或一個給定功能的變體。 監控是Etsy團隊建立信心做持續交付的關鍵。開發人員做自己的功能監控,而且每個人都可以通過儀表盤看到所有的監控圖表。Etsy具有這樣一個策略,在默認情況下所有可以被繪制的信息都會被制成[圖表](http://shouldigraphit.com/)。隨著時間的推移,指標的數量一直穩步增加,所以Etsy建立了[Kale](http://codeascraft.com/2013/06/11/introducing-kale/)來幫助檢測異常模式。所有的日志都可以通過[Supergrep](https://github.com/etsy/supergrep)展現出來,Supergrep是一個基于Web的日志展示工具,這增加了日志的信噪比。 IRC是貫穿Etsy的主要溝通工具,也是Etsy協作文化的關鍵。里面有很多不同的聊天室,每一個都具有特定目的。例如,在聊天室#warroom中僅允許中斷事故有關的會談。聊天室是用來協調調查,討論應對措施和解決方案監控的。與其他的聊天室一樣,#warroom是個鼓勵新工程師們潛水的地方,因為這些聊天室被認為是學習的好地方。 每次中斷發生,或接近中斷的時候,所有人被邀請來做事后檢查。事后檢查是一個重要的文化活動,如果財務和支持人員需要,他們也可以參與。事后檢查是為了成為一個學習的機會,所以它們不應該包含責備。所有事后檢查相關的信息被記錄在[Morgue](https://github.com/etsy/morgue)里面:日期、嚴重性、IRC日志、圖表和補救措施。Morgue是Etsy為了保存事后檢查記錄而特別構建的另一種工具。 對于運營、開發、支付和支持部門的員工都采取隨叫隨到的政策。開發人員通常輪流地在每四個星期里的某一周提供隨叫隨到的支持。該政策的目的是讓每個人都意識到上線產品每天所面臨的問題,使他們能夠在開發新功能或改進現有流程時考慮到這些問題。 Etsy擁有約60萬的月訪問量和每月15億頁面瀏覽量。 **查看英文原文**:[HowEtsy Deploys More Than 50 Times a Day](http://www.infoq.com/news/2014/03/etsy-deploy-50-times-a-day) 感謝[崔康](http://www.infoq.com/cn/author/崔康)對本文的審校。 查看原文:[Etsy](http://www.infoq.com/cn/news/2014/04/etsy-deploy-50-times-a-day)[是如何做到每天50](http://www.infoq.com/cn/news/2014/04/etsy-deploy-50-times-a-day)[次以上部署的](http://www.infoq.com/cn/news/2014/04/etsy-deploy-50-times-a-day)
                  <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>

                              哎呀哎呀视频在线观看